2011-07-04 42 views
0

基本上,Tkinter中的grid_forget()方法似乎只适用于我的程序中的一些小部件,而不适用于其他部件。当我按下“重新启动”按钮时,我想让屏幕清除,然后再次出现开始的小部件,就好像用户已关闭并重新打开程序一样。Tkinter中grid_forget的问题 - Python

不幸的是,当我按下按钮时,一些小部件消失,一些小部件消失。我在所有这些方法上都使用了grid_forget()方法,所以我不太确定问题是什么。看起来,那些保持可见的是我在程序运行时与之交互的那些 - 例如,一个入口小部件和一个按钮。我找不到任何详细说明这个问题的在线文档,所以我想我会寻求帮助。

我的代码(或至少,它的“重新启动”按钮位)低于:

def RetryButtonClick(self): 

     """Note to self: this needs to be fixed""" 
     self.labelvar.set("") 
     self.textvar1.set("") 
     self.textvar2.set("") 
     self.LabelIndiv.config(state=NORMAL) 
     self.LabelIndiv.grid_forget 
     self.textEntryIndiv.config(text="", state=NORMAL) 
     self.textEntryIndiv.grid_forget 
     self.FirstEntry.config(state=NORMAL) 
     self.FirstEntry.grid_forget 
     self.LastLabelB.config(state=NORMAL) 
     self.LastLabelB.grid_forget 
     self.ImportAll.config(state=NORMAL) 
     self.ImportAll.grid_forget 
     self.OpenButtonIndiv.config(state=NORMAL) 
     self.OpenButtonIndiv.grid_forget 
     self.OpenButtonBatch.config(state=NORMAL) 
     self.OpenButtonBatch.grid_forget 
     self.RetryButton.grid_forget 
     self.Label3.config(text="") 
     self.Label5.config(text="") 
     #self.master.grid_forget() 
     self.startwindow() 

self.startwindow()是定义小部件和它们在屏幕上的位置和该功能似乎工作得很好。我肯定这个问题一定是在这一点上,但我对于到底是什么感到不知所措。我尝试将状态更改为正常的小部件,因为之前的功能会禁用它们,但这似乎不起作用。我也尝试在主框架self.master上使用grid_forget,但同样只剩下我与之交互的小部件 - 例如,textEntryIndivOpenButtonIndiv - 在屏幕上可见,其余部分消失。

如果有人对此有任何意见,我会非常感谢您的帮助。如果需要,我可以提供更多的代码,但是这里有很多,所以我没有把它放在这里。

编辑/更新:

没关系。似乎已经修复了自己,但实际上并没有做任何事情 - 从字面上看,它的工作没有对代码做任何更改。现在我觉得发布这是不必要的。好吧。

回答

5

grid_forget是一种方法。当您将它称为self.textEntryIndiv.grid_forget时,您并未调用该方法,而只是要求参考。你需要叫它像self.textEntryIndiv.grid_forget()(注意尾随()