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

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

>将我正在添加的标签和条目框添加到已存在的行之间.

>取消选中“检查”按钮时“隐藏”标签和输入框,而不会销毁它们,以便在重新选中“检查”按钮时可以再次显示它们而不会丢失任何已输入的数据.

>示例:我选择Checkbutton,在出现的新框中输入数据,然后取消选中Checkbutton(导致不再显示框).如果我然后重新选择Checkbutton,我上次选中Checkbutton时输入的数据应该仍然存在.

>“显示”之前已被“隐藏”的标签和条目框,如果在先前已取消选中后重新选中了“检查”按钮.

我不知道这样的事情是否可能,但如果不是,请告诉我.此外,我知道我可以在取消选中Checkbutton时简单地将相关条目框的状态设置为DISABLED,但是如果可能的话,我希望这些框不会出现,以免它们的存在不会混淆不熟悉的用户需要额外投入的情况.

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

最佳答案 我想你想要grid_remove().

The “forget” method of grid, taking as arguments a list of one or more

slave widgets, can be used to remove slaves from the grid they’re

currently part of. This does not destroy the widget altogether, but

takes it off the screen, as if it had not been gridded in the first

place. You can grid it again later, though any grid options you’d

originally assigned will have been lost.

The “remove” method of grid works the same, except that the grid

options will be remembered.

丑陋的例子如下.使用网格选项和条目文本来查看它们是如何保留的.

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,隐藏)