[Add] ExceptionDialog for showing exception message
This commit is contained in:
parent
b5e9bdb559
commit
1a82f6caf9
@ -2,6 +2,7 @@ import ctypes
|
||||
import platform
|
||||
import sys
|
||||
import traceback
|
||||
import webbrowser
|
||||
|
||||
import qdarkstyle
|
||||
from PyQt5 import QtGui, QtWidgets, QtCore
|
||||
@ -13,15 +14,14 @@ from ..utility import get_icon_path
|
||||
|
||||
def excepthook(exctype, value, tb):
|
||||
"""
|
||||
Raise exception under debug mode, otherwise
|
||||
Raise exception under debug mode, otherwise
|
||||
show exception detail with QMessageBox.
|
||||
"""
|
||||
sys.__excepthook__(exctype, value, tb)
|
||||
|
||||
msg = "".join(traceback.format_exception(exctype, value, tb))
|
||||
QtWidgets.QMessageBox.critical(
|
||||
None, "Exception", msg, QtWidgets.QMessageBox.Ok
|
||||
)
|
||||
dialog = ExceptionDialog(msg)
|
||||
dialog.exec_()
|
||||
|
||||
|
||||
def create_qapp(app_name: str = "VN Trader"):
|
||||
@ -45,3 +45,53 @@ def create_qapp(app_name: str = "VN Trader"):
|
||||
)
|
||||
|
||||
return qapp
|
||||
|
||||
|
||||
class ExceptionDialog(QtWidgets.QDialog):
|
||||
""""""
|
||||
|
||||
def __init__(self, msg: str):
|
||||
""""""
|
||||
super().__init__()
|
||||
|
||||
self.msg = msg
|
||||
|
||||
self.init_ui()
|
||||
|
||||
def init_ui(self):
|
||||
""""""
|
||||
self.setWindowTitle("触发异常")
|
||||
self.setFixedSize(600, 600)
|
||||
|
||||
self.msg_edit = QtWidgets.QTextEdit()
|
||||
self.msg_edit.setText(self.msg)
|
||||
self.msg_edit.setReadOnly(True)
|
||||
|
||||
copy_button = QtWidgets.QPushButton("复制")
|
||||
copy_button.clicked.connect(self._copy_text)
|
||||
|
||||
community_button = QtWidgets.QPushButton("求助")
|
||||
community_button.clicked.connect(self._open_community)
|
||||
|
||||
close_button = QtWidgets.QPushButton("关闭")
|
||||
close_button.clicked.connect(self.close)
|
||||
|
||||
hbox = QtWidgets.QHBoxLayout()
|
||||
hbox.addWidget(copy_button)
|
||||
hbox.addWidget(community_button)
|
||||
hbox.addWidget(close_button)
|
||||
|
||||
vbox = QtWidgets.QVBoxLayout()
|
||||
vbox.addWidget(self.msg_edit)
|
||||
vbox.addLayout(hbox)
|
||||
|
||||
self.setLayout(vbox)
|
||||
|
||||
def _copy_text(self):
|
||||
""""""
|
||||
self.msg_edit.selectAll()
|
||||
self.msg_edit.copy()
|
||||
|
||||
def _open_community(self):
|
||||
""""""
|
||||
webbrowser.open("https://www.vnpy.com/forum/forum/2-ti-wen-qiu-zhu")
|
||||
|
Loading…
Reference in New Issue
Block a user