我不确定我是否走在正确的轨道上 - 但我开始使用Python进行GUI编程。
我已经完成了所有按钮和条目。我遇到的主要问题是使用滚动模具并放置结果的方法。
def roll(self):
self.die = Die(int(self.sides.get())) # gets from label
t = self.die.roll()
t += int(self.mod.get()) # gets from label
self.result = Label(self.root, text=t).grid(row=2, column=1, sticky=W)
我的问题是我正在重新实例化旧标签吗?是不是应该销毁旧的Label文本,框架只应在其位置显示新标签?
答案 0 :(得分:1)
在我看来,你并没有以最佳价值使用对象。您应该以这种方式修改代码:
Die
。为什么不保持相同的实例?Label
。也许您没有意识到这一点,但您可以使用其configure()
方法更新标签文本(以及任何Tkinter小部件)。这意味着您只需要第一次grid
实例。顺便说一下,.grid
会返回None
。如果要保留结果标签的引用,则必须使用两行进行Label
实例化:
self.result = Label(self.root, text=t) # first creating instance...
self.result.grid(row=2, colum=1, sticky=W) # ... and placing it in self.root
尝试像这样更新您的代码。您肯定会觉得有必要将部分代码移到__init__()
的{{1}}函数中,所以也请将它写在您的问题中。