如何在Tkinter中显示/隐藏小部件?

时间:2016-06-28 21:18:59

标签: python tkinter

我正在尝试创建一个程序,该程序在给定一系列用户输入的情况下执行函数。有些用户输入仅在某些情况下是必需的,如果可能的话,我想在选择了一个Checkbutton时显示那些输入值的Entry框和标签,表明存在需要这些输入的情况。我不确定该怎么做:

  • 将我正在添加的标签和条目框添加到已存在的行中。

  • 取消选中“检查”按钮时“隐藏”标签和条目框,而不destroy它们,这样如果重新选中“检查”按钮,它们可以再次显示而不会丢失任何已输入的数据。 / p>

    • 示例:我选择了Checkbutton,在出现的新框中输入数据,然后取消选中Checkbutton(导致不再显示框)。如果我然后重新选择Checkbutton,我上次选中Checkbutton时输入的数据应该仍然存在。
  • “显示”之前已被“隐藏”的相同标签和条目框,如果在之前已取消选中后重新选中了“检查”按钮。

我不知道这样的事情是否可能,但如果不是,请告诉我。此外,我知道我可以在取消选中“检查”按钮时将相关的条目框“state设置为DISABLED”,但如果可能的话,我希望这些框不会出现,以便它们的存在不要混淆那些不熟悉需要额外输入的情况的用户。

如果这是相关的,我在Windows 10 Pro上使用Python 2.7.9,Anaconda 2.2.0(64位)和Tkinter版本81008。如果我遗漏任何有用的信息,请随时索取更多信息。提前感谢您提供的任何帮助。

1 个答案:

答案 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()