我有一个用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
按钮,但文本没有更新。
有人可以帮帮我吗?感谢。
答案 0 :(得分:1)
我通过以下方式解决了我的问题:
def rollDice(self):
for die in self.dice:
die.roll()
通过我的骰子循环,我可以滚动每一个。这避免了必须创建一个新的Die对象,这显然会产生4个骰子,我只想要3个。
因此,对于任何偶然发现这种情况的人来说,都有解决方案。