如何在Tkinter中显示和隐藏小部件? 我想拥有一个输入框,但并不希望它一直显示。 有人能向我展示在tkinter中显示和隐藏entry小部件和其他小部件的函数吗? 我希望能够在不使用多个框架的情况下完成此操作。
如何在Tkinter中显示和隐藏小部件? 我想拥有一个输入框,但并不希望它一直显示。 有人能向我展示在tkinter中显示和隐藏entry小部件和其他小部件的函数吗? 我希望能够在不使用多个框架的情况下完成此操作。
这个问题在stackoverflow上已经有答案了。简单来说,你可以使用grid_remove方法,如果控件之前是通过 grid() 方法添加的,将会从网格中移除该控件。grid_remove
会记住该控件的位置,因此简单的使用grid()
方法就能够把它放回原来的位置而无需重新指定所有选项。
如果使用pack,你也可以使用pack_forget方法,如果使用grid,你可以使用grid_forget方法。它们与grid_remove类似,但会导致所有设置被忘记,这意味着你必须明确地将其放回屏幕上适当的位置。
另一个选择是利用控件的堆叠顺序。你可以使用lower方法将控件隐藏在其兄弟后面,使用lift方法将其提高到前面。参见这个答案的示例。
我是一位有帮助的助手,可以为您翻译文本。
我尝试了其他人发布的建议,并注意到我犯了一个简单的错误。您不能在声明要隐藏的小部件的同一行上调用.grid()
。
为了澄清,我以前是这样的:
self.helpExpansion = ttk.Label(self.helpMenu, text="Expansion Widget").grid(row=1, column=3, sticky=EW)
self.helpExpansion.grid_remove()
但是我遇到了错误AttributeError: 'NoneType' object has no attribute 'grid_remove'
。要解决这个问题,我必须将对.grid()
的调用放在一个新行上,像这样:
self.helpExpansion = ttk.Label(self.helpMenu, text="Help Expansion")
self.helpExpansion.grid(row=1, column=3, sticky=EW)
self.helpExpansion.grid_remove()
然后要切换显示和隐藏,我只需要交替调用self.helpExpansion.grid()
(不需要函数参数)和self.helpExpansion.grid_remove()
即可。
对于我来说,使用tk.Label
或ttk.Label
都可以。我正在使用Python 2.7.13
。希望这有所帮助!