コードの一般的な考え方は、1.5秒ごとにボタンのテキストがランダムに変化するため、それぞれが「クリック」 'clack'または 'cluck'。プレーヤーが「クリック」と名付けられたボタンをクリックすると、10ポイントを獲得する。プレーヤーが 'clack'または 'cluck'とラベルされたボタンをクリックすると、そのプレーヤーは10ポイントを失います。ボタンをクリックすると、クリックした点が点滅している場合は明るい緑色に、点滅した場合は黄色に変わります。同じボタンをもう一度クリックしても、次回にボタンのラベルが変更されるまで効果はありません。ボタンのラベルが変更されると、色もグレーに戻ります。tkinter:別の関数へのメソッドの後の使用方法
プレイヤーが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()