对于点击器游戏,我想将以秒为单位的时间间隔添加到GUI中。因此,我们的想法是要有一个每n个滴答调用一次的函数,并且该函数会递增X个对象。
在调用.mainloop()方法之前和之后,我都尝试过使用while循环。在任何一种情况下都没有用,我还尝试了一个疯狂的想法,即在while循环内使用mainloop()方法(意识到这会大声笑)。
from tkinter import *
import time
result = 0
window = Tk()
window.title("Numbers Game")
window.geometry('360x240')
label = Label(window, text=result)
label.grid(column=0,row=0)
def clicked():
global result
result += 1
label.config(text=result)
button = Button(window, text="Push Me", command=clicked)
button.grid(column=1, row=2)
window.mainloop()
while True:
time.sleep(1)
clicked()
我的代码的当前版本产生一个错误,该错误提及该函数在窗口外执行与GUI相关的操作。但是我对如何实现这一目标一无所知。
答案 0 :(得分:1)
您的意思是您想让结果计数器每秒增加一次?您不能在GUI上使用无限循环,因为它们会干扰GUI的主循环。您必须使用after
方法将代码集成到主循环中。
from tkinter import *
import time
result = 0
window = Tk()
window.title("Numbers Game")
window.geometry('360x240')
label = Label(window, text=result)
label.grid(column=0,row=0)
def clicked():
global result
result += 1
label.config(text=result)
def tick():
clicked()
window.after(1000, tick) # after 1,000 milliseconds, call tick() again
button = Button(window, text="Push Me", command=clicked)
button.grid(column=1, row=2)
tick() # start the "loop"
window.mainloop()