我正在尝试创建一个程序,该程序在给定一系列用户输入的情况下执行函数。有些用户输入仅在某些情况下是必需的,如果可能的话,我想在选择了一个Checkbutton时显示那些输入值的Entry框和标签,表明存在需要这些输入的情况。我不确定该怎么做:
将我正在添加的标签和条目框添加到已存在的行中。
取消选中“检查”按钮时“隐藏”标签和条目框,而不destroy
它们,这样如果重新选中“检查”按钮,它们可以再次显示而不会丢失任何已输入的数据。 / p>
“显示”之前已被“隐藏”的相同标签和条目框,如果在之前已取消选中后重新选中了“检查”按钮。
我不知道这样的事情是否可能,但如果不是,请告诉我。此外,我知道我可以在取消选中“检查”按钮时将相关的条目框“state
设置为DISABLED
”,但如果可能的话,我希望这些框不会出现,以便它们的存在不要混淆那些不熟悉需要额外输入的情况的用户。
如果这是相关的,我在Windows 10 Pro上使用Python 2.7.9,Anaconda 2.2.0(64位)和Tkinter版本81008。如果我遗漏任何有用的信息,请随时索取更多信息。提前感谢您提供的任何帮助。
答案 0 :(得分:3)
我想你想要grid_remove()
。
来自http://www.tkdocs.com/tutorial/grid.html:
网格的“遗忘”方法,将一个或多个列表作为参数 slave widgets,可用于从网格中删除奴隶 目前的一部分。这并不会完全破坏小部件,但是 将它从屏幕上取下,好像它没有在第一个网格中 地点。您可以稍后再次对其进行网格化,但您可以使用任何网格选项 最初分配的将会丢失。
除了网格之外,网格的“删除”方法的工作方式相同 选项将被记住。
丑陋的例子如下。使用网格选项和条目文本来查看它们的保存方式。
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()