如何在Tkinter中显示/隐藏小部件?
我正在尝试创建一个程序,该程序执行一系列给定的用户输入。仅在某些情况下才需要几个用户输入,并且如果可能的话,我想仅在选择一个Checkbutton(表示存在要求这些输入的情况)时显示这些输入值的Entry框和Labels。我不确定该怎么做:
将我要添加的标签和条目框放在已经存在的行之间。
取消选中“选择”按钮时,“隐藏”标签和输入框,而不进行选择,
destroy
这样,如果重新选择“选择”按钮,则可以再次显示它们而不会丢失任何已输入的数据。- 示例:我选择了Checkbutton,在出现的新框中输入数据,然后取消选择Checkbutton(导致不再显示这些框)。如果要重新选择Checkbutton,那么上次选择Checkbutton时输入的数据应该仍然存在。
- 如果在取消选择之前重新选择了Checkbutton,则“显示”与以前“隐藏”的相同标签和输入框。
我不知道这样的事情是否可行,但如果不能,请告诉我。另外,我知道我可以在取消选中“选择”state
按钮DISABLED
时将相关的“输入”框设置为,但是,我希望,如果可能的话,不要显示这些框,以便它们的出现不会使不熟悉这种情况的用户感到困惑。在此之下,需要额外的投入。
如果相关,我在Windows 10 Pro上使用Python 2.7.9,Anaconda
2.2.0(64位)和Tkinter版本81008。如果我遗漏了任何有用的信息,请随时索取更多信息。在此先感谢您提供的任何帮助。
回答:
我想你要grid_remove()
。
从http://www.tkdocs.com/tutorial/grid.html:
网格的“忘记”方法将一个或多个从属窗口小部件的列表作为参数,可用于从它们当前所在的网格中删除从属。这不会完全破坏小部件,而是将其从屏幕上移开,就好像它最初没有被网格化一样。尽管您最初分配的所有网格选项都将丢失,但是您可以稍后再次对其进行网格化。
网格的“删除”方法的工作原理相同,只是会记住网格选项。
丑陋的例子如下。玩网格选项和输入文本以查看如何保存它们。
def toggle_entry(): global hidden
if hidden:
e.grid()
else:
e.grid_remove()
hidden = not hidden
hidden = False
root = tk.Tk()
e = tk.Entry(root)
e.grid(row=0, column=1)
tk.Button(root, text='Toggle entry', command=toggle_entry).grid(row=0, column=0)
root.mainloop()
以上是 如何在Tkinter中显示/隐藏小部件? 的全部内容, 来源链接: utcz.com/qa/431392.html