在 Python Tkinter 中按下按钮后如何清除窗口?
Posted
技术标签:
【中文标题】在 Python Tkinter 中按下按钮后如何清除窗口?【英文标题】:How do i clear a window after pressing a button in Python Tkinter? 【发布时间】:2018-09-19 18:18:56 【问题描述】:我目前正在用 python tkinter 为孩子们创建一个数学测验。在这个测验中,我有 3 个不同的“页面”。测验结束时的起始页、测验页和分数页。在我的起始页中,我有三种不同的测验难度供用户选择。一旦单击“EASY”或“HARD”按钮,我如何从开始页面清除窗口的元素,例如我的标签和按钮,以便我可以开始测验?
【问题讨论】:
您在@JhonKey 发布相同问题后发布了此问题,因此应该是重复的,但质量更好,并且由于 JhonKey 没有接受/赞成的答案,因此不能投票支持重复。 我仍在为此苦苦挣扎,所以如果有人有不同的答案,将不胜感激。 【参考方案1】:如果您将所有小部件放在一个框架中,在窗口内,如下所示:
root=Tk()
main=Frame(root)
main.pack()
widget=Button(main, text='whatever', command=dosomething)
widget.pack()
etc.
然后你可以像这样清屏:
main.destroy()
main=Frame(root)
或者在一个按钮中:
def clear():
global main, root
main.destroy()
main=Frame(root)
main.pack()
clearbtn=Button(main, text='clear', command=clear)
clearbtn.pack()
清除屏幕。
您也可以像创建root
(不推荐)一样创建一个新窗口,或者创建一个toplevel
实例,这更适合创建多个但基本相同的实例。
你也可以使用grid_forget()
:
w=Label(root, text='whatever')
w.grid(options)
w.grid_forget()
将创建 w,但将其从屏幕上移除,准备好重新使用相同的选项。
【讨论】:
您清除屏幕的方法实际上不起作用。一旦按下了 3 个按钮,我就会尝试删除窗口的某些方面。这是因为我想保留我的背景、照片等以保持相同的 GUI 设计。我知道你可以做pack_forget
或place_forget
等。我只需要关于如何编码的帮助。我发现的一个方法是,一旦我的按钮被点击,就会调用一个函数,并且在这个函数内部会删除这些小部件。但是,由于我现在才在学习,因此很难编码。
@JoeStanford 使用第一个选项(在按钮中),您只需将内容放在要清除的框架中,其余的就可以进入根目录。
@JoeStanford 编辑答案以包括grid_forget()
【参考方案2】:
您可以使用选项卡式视图并根据所选难度切换选项卡(请参阅 tkinter notebooks https://docs.python.org/3.1/library/tkinter.ttk.html#notebook) 或者,您可以在他们自己的窗口中选择他们选择的难度进行测验。
【讨论】:
啊,我明白了,我不太了解这种方法,但我会研究一下。【参考方案3】:我建议您使用可以相互叠加的不同框架。看看这个答案Switch between two frames in tkinter。
【讨论】:
感谢您的回答,我刚刚看过它,我理解了这个概念,但是发现我很难将它实现到我的代码中。我会继续努力的,谢谢。以上是关于在 Python Tkinter 中按下按钮后如何清除窗口?的主要内容,如果未能解决你的问题,请参考以下文章
如何在python tkinter中按下按钮之前使窗口状态空闲?