2014-10-29 154 views
0

我有一個用Python編寫的程序,點擊一個按鈕後,它將滾動3個骰子並用滾動更新GUI。Tkinter不更新標籤文本

下面是代碼:

import random 
import Tkinter 

class Die(): 
    def roll(self): 
     value = random.randint(1,6) 
     self.display.config(text=value) 

    def __init__(self, display): 
     self.value = 0 
     self.display = Tkinter.Label(display, text=self.value, relief='ridge', borderwidth=5, bg='white') 
     self.display.pack(side='left') 

class DiceRoller: 
    def rollDice(self): 
     Die.roll 

    def __init__(self): 
     window = Tkinter.Tk() 
     window.title("Die Roller") 
     frame = Tkinter.Frame(window) 
     self.dice = [Die(frame), Die(frame), Die(frame)] 
     rollAgain = Tkinter.Button(window, text = "Roll Again", command=self.rollDice) 
     frame.pack() 
     rollAgain.pack(side='bottom') 
     window.mainloop() 

program = DiceRoller() 

一切有關代碼工作,除了一個事實,即功能rollDice()沒有更新框架上的骰子標籤。我點擊我的rollAgain按鈕,但文本不會更新。

有人可以幫我嗎?謝謝。

回答

1

我解決我的問題,通過執行以下:

def rollDice(self): 
    for die in self.dice: 
     die.roll() 

通過通過我的骰子循環我可以滾動每一個。這避免了必須創建一個新的模具對象,這顯然會創建4個骰子,我只想要3個。

因此,對於任何人在這方面遇到困難,有解決方案。