我好像在打砖墙。无论我做什么,创建一个关键错误消息框似乎似乎没有工作。这是我到目前为止所尝试的内容:
flags = QtGui.QMessageBox.StandardButton.Abort
flags |= QtGui.QMessageBox.StandardButton.Ignore
result = QtGui.QMessageBox.critical(
self,
'CRITICAL ERROR',
'Error Message',
flags
)
取自this tutorial(我知道,但到目前为止它有用)。但是,这样做会出现以下错误:
使用错误的参数类型调用'pSide.QtGui.QMessageBox.critical':PySide.QtGui.QMessageBox.critical(CreateMessage,str, StandardButtons)
支持的签名:
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
)
这些似乎都没有正常工作。如何创建关键错误消息框?
答案 0 :(得分:3)
下面的简单示例
import sys
from PySide import QtGui
app = QtGui.QApplication(sys.argv)
a=QtGui.QMessageBox.critical(None,'Error!',"Error Message!", QtGui.QMessageBox.Abort)
答案 1 :(得分: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函数,基本上是一个字符串。我无法真正告诉你你做错了什么,看错误信息,似乎解析了错误。可能是因为你为标志赋值的方式。
该示例还显示了如何处理关键对话框的结果,这似乎很有用。