gpt4 book ai didi

python - 如何定位要销毁的 tkinter 根窗口?

转载 作者:行者123 更新时间:2023-12-01 06:36:59 25 4
gpt4 key购买 nike

对于我当前使用 tkinter 的项目,我需要在 GUI 中拥有多个页面,并且能够通过我链接到此处的答案来实现这一目标 Switch between two frames in tkinter

但是,我找不到一种方法来实现对根窗口的调用而不破坏这个预先存在的代码。我正在尝试创建一个小部件按钮来销毁根窗口,但我无法找到要销毁的特定根。

from tkinter import *

class MainApp(Tk):
"""Class that displays respective frame"""
def __init__(self):
Tk.__init__(self)
self.winfo_toplevel().title("YouTube Ripper and Editor")
self.resizable(0, 0)
container = Frame(self)
container.pack(side="top", fill="both", expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)

self.frames = {}
for F in (StartPage, Downloader, Audio_Player, Config, About):
page_name = F.__name__
frame = F(parent=container, controller=self)
self.frames[page_name] = frame
frame.grid(row=0, column=0, sticky="NSEW")

self.show_frame("StartPage")

def show_frame(self, page_name):
"""Raise called frame"""
frame = self.frames[page_name]
frame.tkraise()


class StartPage(Frame):
"""Class that contains the start page"""
def __init__(self, parent, controller):
Frame.__init__(self, parent)
self.configure(bg = f_color)
self.controller = controller
b_font = Font(family = "Franklin Gothic Book", size = 12)

titleLabel = Label(self, text="Youtube Ripper and Editor", font = ("Franklin Gothic Book", 16, "bold"), bg = f_color)
titleLabel.pack(side="top", fill="x", pady= 30)

button1 = Button(self, text="Downloader", command=lambda: controller.show_frame("Downloader"),
font = b_font, bg = b_color, activebackground = bp_color)
button2 = Button(self, text="Audio Player", command=lambda: controller.show_frame("Audio_Player"),
font = b_font, bg = b_color, activebackground = bp_color)
button3 = Button(self, text="MP3 Configurator", command=lambda: controller.show_frame("Config"),
font = b_font, bg = b_color, activebackground = bp_color)
button4 = Button(self, text="About", command=lambda: controller.show_frame("About"),
font = b_font, bg = b_color, activebackground = bp_color)
button5 = Button(self, text="Exit", command=self.exit, font = b_font, bg = b_color, activebackground = bp_color)
# button1.pack(fill = 'x')
# button2.pack(fill = 'x')
# button3.pack(fill = 'x')
# button4.pack(fill = 'x')
button5.pack(fill = 'x')


def exit(self):
"""Exit program"""
MainApp.destroy()


def main():
app = MainApp()
app.mainloop()


main()

最佳答案

使用您在 StartPage__init__ 中保存的根窗口的引用,并对其调用 destroy

def exit(self):
"""Exit program"""
self.controller.destroy()

关于python - 如何定位要销毁的 tkinter 根窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59620474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com