最佳答案
直到现在,我用以下方式结束我的 Tkinter 程序: tk.mainloop()
,否则什么都不会显示:
from Tkinter import *
import random
import time
tk = Tk()
tk.title = "Game"
tk.resizable(0,0)
tk.wm_attributes("-topmost", 1)
canvas = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0)
canvas.pack()
class Ball:
def __init__(self, canvas, color):
self.canvas = canvas
self.id = canvas.create_oval(10, 10, 25, 25, fill=color)
self.canvas.move(self.id, 245, 100)
def draw(self):
pass
ball = Ball(canvas, "red")
tk.mainloop()
然而,当尝试在这个程序的下一步(使球移动的时间) ,书正在阅读,说要做到以下几点。所以我把绘图函数改成了:
def draw(self):
self.canvas.move(self.id, 0, -1)
并添加以下代码到我的程序:
while 1:
ball.draw()
tk.update_idletasks()
tk.update()
time.sleep(0.01)
但是我注意到,添加这个代码块,使得使用 tk.mainloop()
毫无用处,因为即使没有它,一切都会显示出来! ! !
现在我应该提一下,我的书从来没有谈到过 tk.mainloop()
(可能是因为它使用了 Python 3) ,但是我学会了如何在网上搜索,因为我的程序不能通过复制 book 的代码来工作!
所以我试着做了下面这些不起作用的事情! ! !
while 1:
ball.draw()
tk.mainloop()
time.sleep(0.01)
发生什么事了?tk.mainloop()
是什么?tk.update_idletasks()
和 tk.update()
是做什么的? 它们与 tk.mainloop()
有什么不同?我应该使用上面的循环吗? tk.mainloop()
?还是两者都有?