直到现在,我曾经用以下结束我的Tkiter程序: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()
Run Code Online (Sandbox Code Playgroud)
然而,当尝试下这个程序的下一步(让球随时间移动)时,本书正在阅读,说要做到以下几点.将绘图功能更改为:
def draw(self):
self.canvas.move(self.id, 0, -1)
Run Code Online (Sandbox Code Playgroud)
并将以下代码添加到我的程序:
while 1:
ball.draw()
tk.update_idletasks()
tk.update()
time.sleep(0.01)
Run Code Online (Sandbox Code Playgroud)
但我注意到添加这段代码,使用tk.mainloop()无用,因为即使没有它,一切都会出现!
在这一刻,我应该提到我的书从未谈到tk.mainloop()(也许是因为它使用Python 3)但我学会了它在网上搜索,因为我的程序不能通过复制书的代码工作!
所以我尝试做以下不起作用!
while 1:
ball.draw()
tk.mainloop() …Run Code Online (Sandbox Code Playgroud)