我希望任何人都可以在这里帮助我。我对我构建的 tkinter gui 有疑问。该问题仅发生在Windows中。我的 GUI 创建了一个带有一些标签的结果框架,当需要计算其他内容时,用户单击“newPort”按钮,该按钮应该删除结果框架并设置为False
计算内部的一些实例属性。我遇到的问题(仅在 Windows 中很明显)有时结果frame
及其后代labels
不会每次都消失。有时他们会,有时他们不会。实例变量已正确设置为,False
但小部件在主 GUI 上仍然可见。GUI 还包含几个checkboxes
和radiobuttons
但它们不会影响结果框架的创建或预期的破坏。newPort
在单击导致frame
andlabels
不会被破坏的按钮之前,我无法确定用户采取的操作模式。当我使用 py2exe 冻结我的应用程序以及从 Eclipse IDE 中的 python 解释器运行应用程序时,就会发生这种情况。我没有尝试直接从python解释器运行应用程序(即没有IDE),当我使用eclipse python解释器运行应用程序时,这个问题不会发生在我的Mac上。非常感谢大家!我的代码如下所示:
import Tkinter as TK
class widget(object):
def __init__(self,parent=None):
self.parent = TK.Frame(parent)
self.parent.grid()
self.frame = TK.Frame(self.parent)
self.frame.grid()
newLedger = TK.Button(self.parent,command=self.newPort).grid()
self.calcButton = TK.Button(self.frame,command=self.showResults)
self.calcButton.grid()
self.calcVariable = True
def newPort(self):
self.calcVariable = False
try:
self.second.grid_forget()
self.first.grid_forget()
self.resultsFrame.grid_forget()
self.second.destroy()
self.first.destroy()
self.resultsFrame.destroy()
except:
raise
self.frame.update_idletasks()
def showResults(self):
self.resultsFrame = TK.Frame(self.frame)
self.resultsFrame.grid()
self.first = TK.Label(self.resultsFrame,text='first')
self.first.grid()
self.second = TK.Label(self.resultsFrame,text='second')
self.second.grid()
if __name__ == '__main__':
root = TK.Tk()
obj = widget(root)
root.mainloop()