栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【问题解决/Python】使用threading.Thread的奇怪报错:can only concatenate str (not “int“) to str

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【问题解决/Python】使用threading.Thread的奇怪报错:can only concatenate str (not “int“) to str

目录
      • 问题描述
      • 解决方案
      • 总结

问题描述

最近使用threading.Thread时遇到了奇怪的报错

def start1(RecordText:tk.Text):
    print(type(RecordText))
    for i in range(0,20):
        if(i>0):
            RecordText.delete("%s-1l"%INSERT, INSERT)
        RecordText.insert(END,"*"*i+"n")
        time.sleep(1)
###省略了class的定义
    def __EnsureButton_command(self):
        th=threading.Thread(target=start1,args=(self.RecordText))
        th.start()

之后在窗口中调用此函数便会报错

Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:Users13902AppDataLocalProgramsPythonPython38libthreading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:Users13902AppDataLocalProgramsPythonPython38libthreading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:Users13902AppDataLocalProgramsPythonPython38libtkinter__init__.py", line 1643, in cget
    return self.tk.call(self._w, 'cget', '-' + key)
TypeError: can only concatenate str (not "int") to str

我很好奇~,明明字符串那块语法是对的,为什么会报这种错误?
试图上网查这个错,未果,看来只有我会犯这个错

解决方案

后来上网查了threading.Thread()函数,发现少写了个逗号

#wrong!
th1=threading.Thread(target=start1,args=(self.RecordText)) 
#right!
th2=threading.Thread(target=start1,args=(self.RecordText,))        

也就是说args参数如果只写一个变量,也要在后面加个逗号。
这点可能与内部实现有关,有时间可以研究一下

总结

使用threading.Thread()时,args参数哪怕只放一个变量,也要加个逗号。
希望下次不再犯此类错误。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/341383.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号