【问题标题】:How do I create a critical error message using PySide?如何使用 PySide 创建严重错误消息?
【发布时间】:2019-01-07 10:02:35
【问题描述】:

我好像撞到了一堵砖墙。无论我做什么,创建一个严重错误消息框似乎都不起作用。到目前为止,这是我尝试过的:

flags = QtGui.QMessageBox.StandardButton.Abort
flags |= QtGui.QMessageBox.StandardButton.Ignore

result = QtGui.QMessageBox.critical(
    self,
    'CRITICAL ERROR',
    'Error Message',
    flags
    )

取自this tutorial(我知道,但到目前为止它一直很有帮助)。但是,这样做会引发以下错误:

使用错误的参数类型调用'PySide.QtGui.QMessageBox.critical':

PySide.QtGui.QMessageBox.critical(CreateMessage, str, 标准按钮)

支持的签名:

PySide.QtGui.QMessageBox.critical(PySide.QtGui.QWidget, unicode, unicode,PySide.QtGui.QMessageBox.StandardButtons = QMessageBox.Ok, PySide.QtGui.QMessageBox.StandardButton = NoButton)

PySide.QtGui.QMessageBox.critical(PySide.QtGui.QWidget, unicode, unicode,PySide.QtGui.QMessageBox.StandardButton, PySide.QtGui.QMessageBox.StandardButton)

我还尝试了以下方法:

result = QtGui.QMessageBox.critical(
    self,
    'CRITICAL ERROR',
    'Error Message',
    QtGui.QMessageBox.StandardButton.Abort
    )

# Or this....

result = QtGui.QMessageBox.critical(
    self,
    'CRITICAL ERROR', 
    'Error Message',
    QtGui.QMessageBox.Abort
    )

这些似乎都不能正常工作。如何创建严重错误消息框?

【问题讨论】:

    标签: python-3.x pyside


    【解决方案1】:

    下面的简单示例

    import sys
    from PySide import QtGui
    app = QtGui.QApplication(sys.argv)
    a=QtGui.QMessageBox.critical(None,'Error!',"Error Message!", QtGui.QMessageBox.Abort)
    

    【讨论】:

      【解决方案2】:

      Here's an example from Qt.Gitorious

      from PySide import QtGui, QtCore
      import sys
      
      class Dialog(QtGui.QDialog):
          MESSAGE = QtCore.QT_TR_NOOP("<p>Message boxes have a caption, a text, and up to "
                                      "three buttons, each with standard or custom texts.</p>"
                                      "<p>Click a button or press Esc.</p>")
      
          def __init__(self, parent=None):
              QtGui.QDialog.__init__(self, parent)
              self.criticalLabel = QtGui.QLabel()
              self.criticalLabel.setFrameStyle(QtGui.QFrame.Sunken | QtGui.QFrame.Panel)
              self.criticalButton = QtGui.QPushButton(self.tr("QMessageBox.critica&l()"))
      
              layout = QtGui.QGridLayout()
              layout.addWidget(self.criticalButton, 10, 0)
              layout.addWidget(self.criticalLabel, 10, 1)
              self.setLayout(layout)
      
              self.connect(self.criticalButton, QtCore.SIGNAL("clicked()"), self.criticalMessage)
      
      
          def criticalMessage(self):    
              reply = QtGui.QMessageBox.critical(self, self.tr("QMessageBox.showCritical()"),
                                                     Dialog.MESSAGE, QtGui.QMessageBox.Abort|
                                                     QtGui.QMessageBox.StandardButton.Retry|
                                                     QtGui.QMessageBox.StandardButton.Ignore)
              if reply == QtGui.QMessageBox.Abort:
                  self.criticalLabel.setText(self.tr("Abort"))
              elif reply == QtGui.QMessageBox.Retry:
                  self.criticalLabel.setText(self.tr("Retry"))
              else:
                  self.criticalLabel.setText(self.tr("Ignore"))
      
      if __name__ == '__main__':  
          app = QtGui.QApplication(sys.argv)
          dialog = Dialog()
          sys.exit(dialog.exec_())        
      

      回答你的问题you can check the documentation:

      static PySide.QtGui.QMessageBox.critical(parent, title, text[, buttons=QMessageBox.Ok[, defaultButton=NoButton]])
      

      在示例中,parent = self,title = self.tr("QMessageBox.showCritical()"),text = Dialog.MESSAGE,buttons = QtGui.QMessageBox.Abort | QtGui.QMessageBox.StandardButton.Retry | QtGui.QMessageBox.StandardButton.Ignore

      tr 只是一些用于设置翻译的 Qt 函数,基本上它是一个字符串。我真的不能告诉你你做错了什么,看错误信息,它似乎解析错误。可能是因为您将值分配给标志的方式。

      该示例还展示了如何处理关键对话的结果,这似乎很有用。

      【讨论】:

      • 说实话,我不知道发生了什么。关闭我的 IDE 并再次尝试后,它起作用了。一定是一些奇怪的引用错误或内部的东西。然而,这是一个很好的例子,说明如何创建一个。 (+1 和接受)。
      猜你喜欢
      • 2018-05-20
      • 2013-10-21
      • 1970-01-01
      • 2021-07-04
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多