0

当我单击 tkinter 消息框中的“X”按钮时,我试图重新启动我的主 GUI/停止程序流。知道我该怎么做吗?

PS:我已经阅读了许多关于关闭主 GUI 本身的线程,但没有特定于消息框

默认情况下,当单击“确定”或关闭消息框时,我的代码会继续使用 filedailog.askdirectory() 方法向我询问输出路径

我的消息框和后台的主 GUI

4

1 回答 1

0

没有简单的方法可以将自定义处理程序添加到“X”按钮。我认为最好使用messagebox.askokcancel()消息框的变体而不是showinfo,如果返回的结果为 False,则停止程序:

import tkinter as tk
from tkinter import messagebox, filedialog

root = tk.Tk()


def show_messagebox():
    result = messagebox.askokcancel("Output path", "Please select an output file path")
    if result:
        filedialog.askdirectory()
    else:
        messagebox.showinfo("Program is halted")


tk.Button(root, text="Show messagebox", command=show_messagebox).pack()

root.mainloop()

或者,更简单,您可以直接显示filedialog.askdirectory()。如果用户不想选择目录,可以点击“取消”按钮,然后程序会检查是否有空值返回,如果有则停止:

import tkinter as tk
from tkinter import messagebox, filedialog

root = tk.Tk()


def show_askdirectory():
    directory = filedialog.askdirectory(title="Please select an output file path")
    if not directory:
        messagebox.showinfo(message="The program is halted")
    else:
        messagebox.showinfo(message="Chosen directory: " + directory)


tk.Button(root, text="Choose directory", command=show_askdirectory).pack()

root.mainloop()
于 2021-11-25T11:36:14.977 回答