TKINTER:如何使用 after 方法响应另一个函数



代码的一般思想是,每隔一秒半,按钮上的文本就会随机变化,因此每个按钮都会读到"点击"、"咔嚓"或"咯咯"声。 如果玩家点击标有"点击"的按钮,他或她将获得 10 分。 如果玩家点击标有"咔嚓"或"咯咯"的按钮,他或她将失去 10 分。 单击按钮后,它会改变颜色 - 如果单击得分,则变为浅绿色,如果失去分数,则变为浅黄色。 再次单击同一按钮在下次更改按钮标签之前不起作用,此时颜色也应恢复为灰色。

我遇到的问题是修改代码,以便每次玩家得分 10 分时,标签更改之间的间隔减少 50 毫秒,每次玩家损失 10 分时,间隔增加 100 毫秒。

这是原始代码,但我不知道如何修改间隔的代码。

from tkinter import *
import random 
score = 0 
root = Tk()
scoreFrame = Frame(root)
scoreFrame.pack(expand=YES, fill=BOTH)
scoreLabel = Label(scoreFrame)
scoreLabel.pack(expand=YES) 
def showScore():
    scoreLabel['text'] = 'Score: {0}'.format(score) 
clickFrame = Frame(root)
clickFrame.pack(side=BOTTOM, expand=YES, fill=BOTH)
def changeLabels():
    for button in buttons:
        button['text'] = random.choice(['click', 'clack', 'cluck']) 
        button['bg'] = buttonDefaultColor
    root.after(1500, changeLabels)
def makeButton():
    button = Button(clickFrame)
    def cmd(): 
        global score
        if button['bg'] == buttonDefaultColor:
            if button['text'] == 'click': 
                score += 10
                button['bg'] = 'light green'
            else:
                score -= 10
                button['bg'] = 'light yellow'
            showScore()      
    button['command'] = cmd
    button.pack(side=LEFT, expand=YES, fill=BOTH) 
    return button 
buttons = [makeButton() for i in range(5)] 
buttonDefaultColor = buttons[0]['bg'] 
changeLabels()
showScore()

您需要将 1500 更改为全局值或类属性。 可以更新的东西。

最新更新