如何在游戏的GUI中添加时间(滴答声)

时间:2019-06-20 01:21:06

标签: python tkinter

对于点击器游戏,我想将以秒为单位的时间间隔添加到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相关的操作。但是我对如何实现这一目标一无所知。

1 个答案:

答案 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()