Qt 唐’;t按下QMessageBox的OK按钮时关闭对话框
我这样调用QMessageBox():Qt 唐’;t按下QMessageBox的OK按钮时关闭对话框,qt,pyside,qmessagebox,Qt,Pyside,Qmessagebox,我这样调用QMessageBox(): class Main(QDialog): def __init__(self): self.view = QUiLoader().load("app.ui", self) self.view.show() self.functionA() .... functionA(): try: .... except Exception:
class Main(QDialog):
def __init__(self):
self.view = QUiLoader().load("app.ui", self)
self.view.show()
self.functionA()
....
functionA():
try:
....
except Exception:
QMessageBox.critical(self, "Error", "System Failure")
def main():
app = QApplication(sys.argv)
a = Main()
sys.exit(app.exec_())
if __name__ == "__main__"
main()
QMessageBox.critical(self.view, "Error", "System Failure")
当我点击消息框的OK按钮时,它也会关闭我的对话框。如何避免这种情况?您的代码示例(稍微修改以使其运行)适合我:
from PySide.QtGui import *
class Main(QDialog):
def __init__(self):
super().__init__()
self.show()
self.functionA()
def functionA(self):
try:
raise Exception()
except Exception:
QMessageBox.critical(self, "Error", "System Failure")
app = QApplication([])
a = Main()
app.exec_()
您可以按消息框上的“确定”,对话框将不会关闭。您可能正在执行其他操作,导致对话框关闭。使用QMessageBox如下:
class Main(QDialog):
def __init__(self):
self.view = QUiLoader().load("app.ui", self)
self.view.show()
self.functionA()
....
functionA():
try:
....
except Exception:
QMessageBox.critical(self, "Error", "System Failure")
def main():
app = QApplication(sys.argv)
a = Main()
sys.exit(app.exec_())
if __name__ == "__main__"
main()
QMessageBox.critical(self.view, "Error", "System Failure")
您必须提供对话框的代码。messagebox不会是罪魁祸首。您可能正在“accept()”插槽中调用messagebox,或者可能已将其连接到信号,然后,不要通过不调用对话框槽来真正接受它。如果对话框不应该关闭,那么应该执行什么操作?@Pratham消息框应该关闭,用户可以继续工作dialog@SebastianLange添加代码代码代码对我有效。你的代码还有别的吗?是的,我也在做别的事情。所以我更新了问题并找到了解决方案well@Patrick字体真遗憾,你没有写下它是什么。我也有类似的问题,但不知道是什么打动了我。这个答案只适用于你的特殊情况,而你的特殊情况在问题中没有充分的记录。其他人很可能需要QMessageBox的其他参数。事实上,这个问题对SO来说不是一个好问题,因为其他人不太可能从中学到很多东西。