我是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)
但是,按文件菜单中的按钮仍然没有工作。我究竟做错了什么?另外,当我做对了,它会隐藏框架包含的所有内容吗?
答案 0 :(得分: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
在将来被调用一秒钟。
要回答问题的最后部分:如果隐藏框架,框架内的所有内容也将被隐藏。