47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
# -*- 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_() |