udp*_*til 19 python user-interface tkinter
如何在Tkinter中显示和隐藏小部件?我想要一个输入框,但不要一直显示它.有人能告诉我在tkinter中显示和隐藏条目小部件和其他小部件的功能吗?我希望能够在没有多个帧的情况下做到这一点.
Bry*_*ley 27
之前已经在stackoverflow上回答了这个问题.简短的回答是,您可以使用grid_remove,如果之前通过网格添加了小部件,则会导致小部件被删除.grid_remove记住小部件的位置,因此简单的grid()将把它放回去,而不必重新指定所有选项.
您还可以使用pack_forget(如果使用pack)和grid_forget(如果使用网格).这些工作与grid_remove类似,只是它们会导致忘记所有设置,这意味着您必须将其显式放回屏幕上的适当位置.
另一种选择是利用小部件的堆叠顺序.您可以使用较低的方法隐藏其父窗口后面的窗口小部件,然后将其抬起以将其抬高.请参阅此答案以获取示例.
我尝试了其他人发布的建议,并注意到我犯了一个简单的错误。您不能.grid()在声明要隐藏的小部件的同一行上调用。
为了澄清,我以前有这个:
self.helpExpansion = ttk.Label(self.helpMenu, text="Expansion Widget").grid(row=1, column=3, sticky=EW)
self.helpExpansion.grid_remove()
Run Code Online (Sandbox Code Playgroud)
但我得到了错误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()
Run Code Online (Sandbox Code Playgroud)
然后在显示和隐藏之间切换,我只是在调用self.helpExpansion.grid()(不需要函数参数)和self.helpExpansion.grid_remove().
对我来说,它适用于两者tk.Label或ttk.Label。我正在使用 Python 2.7.13。希望有帮助!
| 归档时间: |
|
| 查看次数: |
38917 次 |
| 最近记录: |