2017-04-12 8 views
-1

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() 

Antwort

1

Sie müssen die 1500 zu einem globalen Wert oder einer Klasseneigenschaft ändern. Etwas, das aktualisiert werden kann.

Verwandte Themen