代码的一般概念是,每隔一秒半,按钮上的文字会随机变化,因此每个文本都会读取“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()
答案 0 :(得分:1)
您需要将1500更改为全局值或类属性。可以更新的东西。