Tkinter不更新标签文本

时间:2014-10-29 05:36:44

标签: python tkinter

我有一个用Python编写的程序,点击一个按钮就可以滚动3个骰子并用滚动更新GUI。

以下是代码:

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 个答案:

答案 0 :(得分:1)

我通过以下方式解决了我的问题:

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

通过我的骰子循环,我可以滚动每一个。这避免了必须创建一个新的Die对象,这显然会产生4个骰子,我只想要3个。

因此,对于任何偶然发现这种情况的人来说,都有解决方案。