在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(…)