tkinter:如何在方法之后使用来响应另一个函数

时间:2017-04-12 16:18:40

标签: python tkinter

代码的一般概念是,每隔一秒半,按钮上的文字会随机变化,因此每个文本都会读取“click”,“clack”或“cluck”。如果玩家点击标有“点击”的按钮,则他或她得分为10分。如果玩家点击标有“clack”或“cluck”的按钮,则他或她会失去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()

1 个答案:

答案 0 :(得分:1)

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