# -*- coding: utf-8 -*- import sys import traceback from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QTextEdit from PyQt5.QtCore import Qt class MyWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Error Handling Example") self.setGeometry(100, 100, 800, 600) # 创建布局和文本编辑部件 layout = QVBoxLayout() self.text_edit = QTextEdit() # 将文本编辑部件添加到布局中 layout.addWidget(self.text_edit) # 创建一个小部件并将布局设置为其布局 widget = QWidget() widget.setLayout(layout) # 将小部件设置为主窗口的中央部件 self.setCentralWidget(widget) # 重定向错误输出到文本编辑部件 sys.excepthook = self.handle_exception # 设置文本编辑部件为只读 self.text_edit.setReadOnly(True) def handle_exception(self, exc_type, exc_value, exc_traceback): # 将错误信息输出到文本编辑部件 error_message = ''.join(traceback.format_exception(exc_type, exc_value, exc_traceback)) self.text_edit.append(error_message) if __name__ == "__main__": app = QApplication([]) window = MyWindow() window.show() # 产生一个错误 print(1 / 0) app.exec_()