在QMessageBox中显示Python控制台消息
我正在使用 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 个回答
1
如果你的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__