在QMessageBox中显示python控制台消息

时间:2014-06-03 13:58:19

标签: python pyqt mysql-connector

我使用LOAD DATA INFILE command将文件导入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...)  

1 个答案:

答案 0 :(得分:1)

如果SQL库使用标准Python输出,您可以尝试使用任何实现write方法的对象覆盖sys.stderrsys.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__