我正在尝试创建一个程序,该程序执行一系列给定的用户输入。仅在某些情况下才需要几个用户输入,并且如果可能的话,我想仅在选择一个Checkbutton(表示存在要求这些输入的情况)时显示这些输入值的Entry框和Labels。我不确定该怎么做:
将我要添加的标签和条目框放在已经存在的行之间。
取消选中“选择”按钮时,“隐藏”标签和输入框,而不进行选择,destroy这样,如果重新选择“选择”按钮,则可以再次显示它们而不会丢失任何已输入的数据。
destroy
我不知道这样的事情是否可行,但如果不能,请告诉我。另外,我知道我可以在取消选中“选择”state按钮DISABLED时将相关的“输入”框设置为,但是,我希望,如果可能的话,不要显示这些框,以便它们的出现不会使不熟悉这种情况的用户感到困惑。在此之下,需要额外的投入。
state
DISABLED
如果相关,我在Windows 10 Pro上使用Python 2.7.9,Anaconda 2.2.0(64位)和Tkinter版本81008。如果我遗漏了任何有用的信息,请随时索取更多信息。在此先感谢您提供的任何帮助。
我想你要grid_remove()。
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()