【问题标题】:Thread object can't be interpreted as an integer线程对象不能解释为整数
【发布时间】:2015-05-05 07:01:58
【问题描述】:

尝试在 Tkinter 中制作一些动画电视“雪”(我知道“雪”已过时) 我在标题中遇到了我无法解释的错误。如果我以通常的方式调用该例程,则该例程可以正常工作。

import tkinter
from random  import randint
import threading

x,y =640, 480
rm=256*256*256

def do_snow(img):
  while True:  
    s=(" ".join((("{"+" ".join("#{:06x}".format(randint(0, rm))
          for i in range(x)))+"}" for j in range(y))))
    img.put(s)
    print('x')

t = tkinter.Tk()
img = tkinter.PhotoImage(width=x,height=y)
c = tkinter.Label(t,image=img);c.pack()
x=threading.Thread(target=do_snow ,args=(img,))
x.daemon = True
x.start() 
t.mainloop()

错误转储是:

Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Python34\lib\threading.py", line 920, in _bootstrap_inner
    self.run()
  File "C:\Python34\lib\threading.py", line 868, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\AGUAL\Google Drive\python\tkinter\do_snow.py", line 12, in do_snow
    for i in range(x)))+"}" for j in range(y))))
  File "C:\Users\AGUAL\Google Drive\python\tkinter\do_snow.py", line 12, in <genexpr>
    for i in range(x)))+"}" for j in range(y))))
TypeError: 'Thread' object cannot be interpreted as an integer

【问题讨论】:

    标签: python multithreading python-3.x tkinter


    【解决方案1】:

    修正你的变量名:

    x,y =640, 480
    #...
    x=threading.Thread(target=do_snow ,args=(img,))
    

    更好的是,不要对所有内容都使用模块全局变量。

    【讨论】:

    • 谢谢@tzaman。我更喜欢它是我的一个愚蠢的错误,而不是我在想的一些奇怪的事情。它现在有效
    猜你喜欢
    • 1970-01-01
    • 2018-03-19
    • 2018-01-19
    • 1970-01-01
    • 2017-08-01
    • 2018-05-15
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多