繁体   English   中英

grid_remove不删除小部件

[英]grid_remove not removing widgets

我是python的新手,这很可能是造成我这个问题的小错误,但是我一直在尝试删除使用grid()放置的ttk框架小部件。 我一直在尝试grid_forget,但是没有用。 以下是部分代码:

def wait():
    mainframe.grid_remove()
    root.after(1000)
    mainframe.grid()

root = Tk()
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe['borderwidth'] = 5
mainframe['relief'] = 'sunken'
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
#...
root.option_add('*tearOff', FALSE)
menubar = Menu(root)
root['menu'] = menubar
filemenu = Menu(menubar)
filemenu.add_command(label='Test', command=wait)

不过,按文件菜单中的按钮一直无效。 我究竟做错了什么? 另外,如果我做对了,是否会隐藏框架包含的所有内容?

让我们检查以下三行代码:

mainframe.grid_remove()
root.after(1000)
mainframe.grid()

第一行确实确实成功删除了网格。 但是,在事件循环有机会更新显示之前,它仍然可见。

第二行冻结gui ,包括删除更新显示的功能。

第三行将框架添加回去。 由于GUI没有机会在grid_remove()grid()之间更新显示,因此没有可见的变化。

如果要隐藏框架一秒钟,请将代码更改为此:

mainframe.grid_remove()
root.after(1000, mainframe.grid)

上面的内容不会冻结您的GUI,并且会导致mainframe.grid在将来被调用一秒钟。

要回答问题的最后一部分:如果隐藏框架,框架内的所有内容也将被隐藏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM