1
我已经在python编码之前,但我还没有用过tkinter很多。我写了这段代码,我找不出为什么它不工作。我检查了互联网,但没有发现任何东西。这已经发生过,但不幸的是我找不到该程序。Tkinter画布部件
这是代码
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"
和
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'
谁能帮助。