我正在尝试使用一个对话框,以便向用户报告错误。如果有一个错误,这似乎是可行的,尽管当有多个错误时,当下一个错误关闭时它不会重新打开而是崩溃。

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,该方法不起作用。

只需更改函数或变量名称即可解决此问题。

09-25 21:41