grid_移除而不是移除小部件

2024-10-04 01:31:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,完全有可能是我的某个小错误造成的,但是我一直在尝试删除使用grid()放置的ttk frame小部件。我一直在试着忘记,但没用。以下是部分代码:

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)

不过,按“文件”菜单中的按钮不起作用。我做错什么了?而且,当我做对了,它会隐藏框架中包含的一切吗?


Tags: add部件错误rootframecommandgridmenu
1条回答
网友
1楼 · 发布于 2024-10-04 01:31:42

我们来看看这三行代码:

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

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

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

第三行将帧向后添加。由于GUI没有机会更新grid_remove()和{}之间的显示,因此没有可见的变化。在

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

^{pr2}$

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

回答你问题的最后一部分:如果你隐藏框架,框架内的一切也将被隐藏。在

相关问题 更多 >