Tkinter画布小部件
我以前用python编写过代码,但很少使用tkinter。我已经写了这段代码,我不明白为什么它不工作。我在网上查过了,什么也没找到。这以前发生过,但不幸的是我找不到程序 这是密码Tkinter画布小部件,tkinter,python-3.3,Tkinter,Python 3.3,我以前用python编写过代码,但很少使用tkinter。我已经写了这段代码,我不明白为什么它不工作。我在网上查过了,什么也没找到。这以前发生过,但不幸的是我找不到程序 这是密码 from tkinter import * import time import threading import random C = Canvas() class ball(threading.Thread): def run(self): x = 1 y = 1
from tkinter import *
import time
import threading
import random
C = Canvas()
class ball(threading.Thread):
def run(self):
x = 1
y = 1
ball = C.create_oval(0,0,10,10,fill = "Green")
C.pack()
while True:
C.move(ball,x,y)
C.update()
time.sleep(0.03)
if C.coords(ball)[0] > 200:
x = x - random.randint(1,2)
if x > 2:
x = 2
elif x < -2:
x = -2
if C.coords(ball)[1] > 200:
y = y - random.randint(1,2)
if y > 2:
y = 2
elif y < -2:
y = -2
if C.coords(ball)[0] < 0:
x = x + random.randint(1,2)
if x > 2:
x = 2
elif x < -2:
x = -2
if C.coords(ball)[1] < 0:
y = y + random.randint(1,2)
if y > 2:
y = 2
elif y < -2:
y = -2
for i in range(3):
class Child(ball):
pass
childball = Child()
childball.start()
time.sleep(1)
例如,它每次都会返回不同的错误
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python33\lib\threading.py", line 901, in _bootstrap_inner
self.run()
File "C:/Python33/Game.py", line 35, in run
if C.coords(ball)[0] < 0:
File "C:\Python33\lib\tkinter\__init__.py", line 2299, in coords
self.tk.call((self._w, 'coords') + args))]
_tkinter.TclError: bad option "35.0 34.0 45.0 44.0": must be addtag, bbox, bind, canvasx, canvasy, cget, configure, coords, create, dchars, delete, dtag, find, focus, gettags, icursor, index, insert, itemcget, itemconfigure, lower, move, postscript, raise, scale, scan, select, type, xview, or yview
Exception in thread Thread-2:
Traceback (most recent call last):
File "C:\Python33\lib\threading.py", line 901, in _bootstrap_inner
self.run()
File "C:/Python33/Game.py", line 23, in run
if C.coords(ball)[0] > 200:
File "C:\Python33\lib\tkinter\__init__.py", line 2299, in coords
self.tk.call((self._w, 'coords') + args))]
_tkinter.TclError: invalid command name "89.0 49.0 99.0 59.0"
及
任何人都可以提供帮助。除了创建小部件的线程外,您不能在任何线程中访问tkinter小部件-tkinter不是设计用于多线程的 如果你所做的只是简单的动画,你不需要线程。给出了一个使用tkinter的after方法制作动画的示例
Exception in thread Thread-3:
Traceback (most recent call last):
File "C:\Python33\lib\threading.py", line 901, in _bootstrap_inner
self.run()
File "C:/Python33/Game.py", line 23, in run
if C.coords(ball)[0] > 200:
File "C:\Python33\lib\tkinter\__init__.py", line 2299, in coords
self.tk.call((self._w, 'coords') + args))]
File "C:\Python33\lib\tkinter\__init__.py", line 2297, in <listcomp>
return [getdouble(x) for x in
ValueError: could not convert string to float: 'coords'