Python 如何处理Tkinter应用程序中的后端错误?
我有一些后端代码连接到Tkinter生成的简单UI。用户界面基本上让用户选择一个文件,然后传递到后端。然后,将从文件中实例化一些对象。该对象有一个方法(在创建对象时运行),用于检查是否存在错误,如果存在错误,它将提示一个对话框,请求用户进行干预(向用户显示一些数据并询问他们如何处理) 我想到了三种处理方法:Python 如何处理Tkinter应用程序中的后端错误?,python,tkinter,Python,Tkinter,我有一些后端代码连接到Tkinter生成的简单UI。用户界面基本上让用户选择一个文件,然后传递到后端。然后,将从文件中实例化一些对象。该对象有一个方法(在创建对象时运行),用于检查是否存在错误,如果存在错误,它将提示一个对话框,请求用户进行干预(向用户显示一些数据并询问他们如何处理) 我想到了三种处理方法: 创建一个临时的tk.root并从那里打开一个新窗口(不确定重复创建tk.root是否是一个好主意,尤其是该方法运行了100多次) 让该方法使用数据引发自定义异常,并在Tkinter应用程序中
Tk
窗口的情况(因为两个Tk
窗口无法通信)。相反,创建Toplevel()
实例,它们类似于弹出窗口
根据您的问题,我建议创建一个继承Tkinter的Toplevel
类的ErrorWindow
类
如下所示:
from tkinter import *
class ErrorWindow(Toplevel):
def __init__(self, master, error_info, *args, **kwargs):
super(ErrorWindow, self).__init__(master, *args, **kwargs)
"""
Display code here
"""
ErrorWindow
的主窗口将是您拥有的根Tk
窗口
特别是该方法运行了100多次
为了确保用户不会被数百个错误窗口淹没,您可以使用
root.wait\u窗口(x\u窗口)
来处理此问题。这将停止根窗口的执行,直到关闭x\u窗口
(其中x\u窗口
是您的Toplevel
对象)。如果需要打开其他窗口,请使用Toplevel()
而不是再次调用Tk()
(这会导致各种各样的问题,因为它不仅仅是创建一个窗口)。