python 如何执行下一个函数时自动停止现在的函数?

用tkinter 写了一个窗口的程序,然后这个窗口的程序的按钮指向了另一个函数,我想在点击这个按钮的同时另一个函数开始执行,然后本函数的窗口自动关闭。
由于本窗口有三个类似按钮,用在被指向函数中写destroy()的方法行不通,(会提示不能被关闭因为已经destroyed ),且伴随空白窗口出现。
请问如何解决?

以下内容引用自GPT:
可以在被指向函数中使用Top-level窗口来代替本窗口,并在点击按钮时直接销毁本窗口,同时启动另一个线程来执行需要的函数。具体实现可以参考以下示例代码:

import tkinter as tk
import threading

class MainFrame(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.create_widgets()

    def create_widgets(self):
        self.button1 = tk.Button(self, text="按钮1", command=self.button1_clicked)
        self.button1.pack()
        self.button2 = tk.Button(self, text="按钮2", command=self.button2_clicked)
        self.button2.pack()
        self.button3 = tk.Button(self, text="按钮3", command=self.button3_clicked)
        self.button3.pack()

    def button1_clicked(self):
        self.start_function_thread(self.function1)
        self.master.destroy()

    def button2_clicked(self):
        self.start_function_thread(self.function2)
        self.master.destroy()

    def button3_clicked(self):
        self.start_function_thread(self.function3)
        self.master.destroy()

    def start_function_thread(self, function):
        thread = threading.Thread(target=function)
        thread.start()

    def function1(self):
        print("执行函数1")

    def function2(self):
        print("执行函数2")

    def function3(self):
        print("执行函数3")


root = tk.Tk()
app = MainFrame(master=root)
app.pack()
app.mainloop()

这里创建了一个MainFrame类作为主窗口,其中包含三个按钮和三个被指向的函数。在点击按钮时,先用start_function_thread()方法开启一个新线程来执行相应的函数,然后调用master.destroy()方法销毁本窗口。这样可以避免空白窗口出现以及不能使用destroy()方法的问题。

参考多线程开发,可以在触发事件的回调函数中,分别执行需要的函数和销毁主窗口的动作。具体来说,可以在回调函数中先执行需要的函数,再调用主窗口的destroy()方法来销毁窗口。这样可以保证不会出现空白窗口的问题。

import tkinter as tk

def do_something():
    # 在这里执行需要的函数

def button_callback():
    do_something()  # 先执行do_something函数
    root.destroy()  # 销毁主窗口

root = tk.Tk()

button = tk.Button(root, text="按钮", command=button_callback)
button.pack()

root.mainloop()

当用户点击了按钮后,会触发button_callback()函数。该函数会先执行do_something()函数,然后再调用root.destroy()方法来销毁root所代表的主窗口。这样可以保证在执行完需要的函数之后,关闭主窗口,同时也不会出现空白窗口的情况。
大概思路就如上了,你按照你的环境试下是否可行,如果对你有帮助的花,请给我一个采纳哦,谢谢啦