我正在尝试使用一个对话框,以便向用户报告错误。如果有一个错误,这似乎是可行的,尽管当有多个错误时,当下一个错误关闭时它不会重新打开而是崩溃。
def errordialog(self, errormessage):
self.errordialog = QMessageBox()
self.errordialog.addButton("OK", 0)
self.errordialog.setText(errormessage)
self.errordialog.exec()
这是主程序
def validate_data(data, regex):
if re.match(regex, data, re.VERBOSE):
error = False
else:
errormessage = "ERROR"
print("0")
self.errordialog(errormessage)
print("1")
self.errordialog.accept() # I added this in while trying to solve the issue
print("2")
error = True
return error
data = supplierid
regex = "[A-Z]$"
error = validate_data(data, regex)
print("3")
data = suppliername
regex = ".(1,50)$"
error = validate_data(data, regex)
print("4")
它打印0、1、2、3、0,然后崩溃
错误消息是
object QMessageBox is not callable
最佳答案
调用这行代码self.errordialog(errormessage)
之后,您将进入errordialog函数。但是,在errordialog函数内部,您已经重新定义了self.errordialog
,使其属于QMessageBox类而不是类函数,因此,当它第二次通过验证时,您尝试调用QMessageBox,该方法不起作用。
只需更改函数或变量名称即可解决此问题。