grid_remove不删除小部件

问题描述 投票:0回答:1

我是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)

但是,按文件菜单中的按钮仍然没有工作。我究竟做错了什么?另外,当我做对了,它会隐藏框架包含的所有内容吗?

python tkinter
1个回答
0
投票

我们来看看这三行代码:

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

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

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

第三行将帧添加回来。由于GUI没有机会更新grid_remove()grid()之间的显示,因此没有明显的变化。

如果您希望隐藏帧一秒钟,请将代码更改为:

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.