2

壁にぶつかりそうです。私が何をしても、重大なエラーメッセージボックスを作成してもうまくいかないようです。これまでに試したことは次のとおりです。

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

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

このチュートリアルから引用したとおりです(古いことは知っていますが、これまでのところ役に立ちました)。ただし、これを行うと、次のエラーが発生します。

「PySide.QtGui.QMessageBox.critical」が間違った引数タイプで呼び出されました:

PySide.QtGui.QMessageBox.critical(CreateMessage, str, StandardButtons)

サポートされている署名:

PySide.QtGui.QMessageBox.critical(PySide.QtGui.QWidget、ユニコード、ユニコード、PySide.QtGui.QMessageBox.StandardButtons = QMessageBox.Ok、PySide.QtGui.QMessageBox.StandardButton = NoButton)

PySide.QtGui.QMessageBox.critical(PySide.QtGui.QWidget、ユニコード、ユニコード、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
    )

これらのどれも正しく機能していないようです。重大なエラー メッセージ ボックスを作成するにはどうすればよいですか?

4

2 に答える 2

3

以下の簡単な例

import sys
from PySide import QtGui
app = QtGui.QApplication(sys.argv)
a=QtGui.QMessageBox.critical(None,'Error!',"Error Message!", QtGui.QMessageBox.Abort)
于 2015-04-03T02:03:27.557 に答える
2

これは 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_())        

質問に答えるには、次のドキュメントを確認してください。

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 関数にすぎません。基本的には文字列です。エラーメッセージを見ると、何が間違っていたのかわかりませんが、解析が間違っているようです。おそらく、フラグに値を割り当てる方法が原因です。

この例では、重要なダイアログの結果を処理する方法も示されています。これは有用と思われます。

于 2013-08-09T21:23:07.063 に答える