如何在PyQt5中重新打开一个对话框

时间:2016-03-30 16:32:54

标签: python user-interface pyqt

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

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

1 个答案:

答案 0 :(得分:1)

调用这行代码self.errordialog后,进入errordialog函数。但是,在errordialog函数中,您重新定义了{{1}},因此它是类QMessageBox而不是类函数,所以当它第二次通过验证时,您尝试调用QMessageBox,这不起作用。

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