2017-04-12 8 views
-1

コードの一般的な考え方は、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() 

答えて

1

1500をグローバル値またはクラスプロパティのいずれかに変更する必要があります。何かを更新することができます。

関連する問題