verwenden Die allgemeine Idee des Codes ist, dass alle anderthalb Sekunden, der Text auf den Tasten ändert sich zufällig, so dass jeder entweder 'klick' liest, 'klack' oder 'gackern'. Klickt der Spieler auf einen Button mit der Aufschrift "Klick", erhält er 10 Punkte. Klickt der Spieler auf einen Button mit der Beschriftung "klack" oder "gackern", verliert er 10 Punkte. Wenn auf eine Schaltfläche geklickt wird, ändert sich die Farbe in hellgrün, wenn der Klick Punkte erzielt, und gelb, wenn Punkte verloren gehen. Ein erneutes Klicken auf dieselbe Schaltfläche hat keine Auswirkungen, bis die Schaltflächenbeschriftungen das nächste Mal geändert werden. Zu diesem Zeitpunkt sollten die Farben ebenfalls wieder grau werden.tkinter: wie nach Methode als Antwort auf eine andere Funktion
Das Problem, das ich habe, ist die Änderung des Codes, so dass jedes Mal, wenn der Spieler 10 Punkte erzielt, das Intervall zwischen Etikettenwechsel um 50 Millisekunden reduziert wird und jedes Mal 10 Punkte verliert das Intervall um 100 Millisekunden erhöht wird.
Hier ist der ursprüngliche Code, aber ich weiß nicht, wie Sie den Code für die Intervalle ändern.
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()