在QMessageBox中显示python控制台消息

在QMessageBox中显示python控制台消息,python,pyqt,mysql-connector,Python,Pyqt,Mysql Connector,我正在使用加载数据填充命令将文件导入MySQL数据库 某些文件可能有错误,导致出现控制台消息,如: mysql.connector.errors.DatabaseError: 1265 (01000): Data truncated for column 'z' at row x 如何将此错误消息放入QMessageBox,以便.exe的用户有一个用于检查数据集的指示器 try: cursor.execute(query) except: QMessageBox.warning(s

我正在使用
加载数据填充命令
将文件导入MySQL数据库
某些文件可能有错误,导致出现控制台消息,如:

mysql.connector.errors.DatabaseError: 1265 (01000): Data truncated for column 'z' at row x
如何将此错误消息放入
QMessageBox
,以便.exe的用户有一个用于检查数据集的指示器

try:
   cursor.execute(query)
except:
   QMessageBox.warning(self, "Failure", ...Console Output...)  

如果SQL库使用标准Python输出,则可以尝试使用实现写入方法的任何对象覆盖
sys.stderr
sys.stdout

import sys

class TextBoxStderr:

    def __init__(self):
        self.textbox = QTextEdit()

    def write(self, errmsg):
        self.textbox.append(errmsg)  

box_stderr = TextBoxStderr()
sys.stderr = box_stderr

# ... Call Import Operation ...

# If any error was appended to the text box, show it
if box_stderr.textbox.toPlainText():
     box_stderr.textbox.show()
发送到stderr的任何文本都将附加到QTextEdit。确保在操作完成后回滚原始对象:

sys.sterr = sys.__stderr__

到目前为止,这是可行的,但目前我得到22个消息框,其中包含整个错误消息的块。在显示消息框之前,我如何加入它们?抱歉,我太挑剔了,但是有没有办法从错误消息中删除行?整个消息对用户来说可能太多了,因此像
QMessageBox这样的QMessageBox.warning(self,“Data error”,“原始日期中的值%s左右似乎有错误”,第行)
可能更合适。在
TextBoxStderr
中,将文本框定义为列表(),而不是QTextEdit。然后将最后一个if替换为:
if-box\u stderr.textbox:QMessageBox.warning(…)