1
這是我的理解是,類DiceRoller
應該從類die
被繼承,但是我每次運行時出現錯誤:爲什麼我的Tkinter標籤不更新?
self.display.config(text = str(self.value))
AttributeError: 'DiceRoller' object has no attribute 'display'
的self.value
值更新,但Tkinter的標籤是沒有的。
import Tkinter
import random
class die(object):
def __init__(self,value,display):
self.value = random.randint(1,6)
self.display = Tkinter.Label(display,
text = str(self.value),
font = ('Garamond', 56),
bg = 'white',
relief = 'ridge',
borderwidth = 5)
self.display.pack(side = 'left')
class DiceRoller(die):
def __init__(self):
self.gameWin = Tkinter.Tk()
self.gameWin.title('Dice Roller')
self.gameFrame = Tkinter.Frame(self.gameWin)
self.dice = []
self.Row1 = Tkinter.Frame(self.gameWin)
for i in range(1,4):
self.dice.append(die(i,self.Row1))
self.topFrame = Tkinter.Frame(self.gameWin)
self.rollBtn = Tkinter.Button(self.topFrame,
text = 'Roll Again',
command = self.rollDice,
font = ('Garamond', 56))
self.rollBtn.pack(side = 'bottom')
self.gameFrame.pack()
self.Row1.pack()
self.topFrame.pack()
self.gameWin.mainloop()
def rollDice(self):
self.value = random.randint(1,6)
print self.value #to show value is in fact changing
self.display.config(text = str(self.value))
varName = DiceRoller()
你正在設置'text = str(self.value)' - 這是一次性的,它不是某種綁定,它會在'self.value'更改時更新。設置'textvariable = self.value',一個直接引用。 – jonrsharpe
[使python/tkinter標籤小部件更新?]的可能重複?(http://stackoverflow.com/questions/1918005/making-python-tkinter-label-widget-update) – jonrsharpe