如何在PyQt4中向QMessageBox添加自定义按钮

时间:2013-03-28 13:07:30

标签: python pyqt

我正在编写一个需要QMessageBox中的自定义按钮的应用程序。我设法在QT设计师中创建了一个例子,如下所示。

enter image description here

我想在QMessageBox中执行此操作。

我正在使用python 2.6.4和PyQt4。拜托,任何人都可以帮忙。

2 个答案:

答案 0 :(得分:21)

以下是从头开始构建自定义消息框的示例。

import sys
from PyQt4 import QtCore, QtGui


class Example(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Example, self).__init__(parent)

        msgBox = QtGui.QMessageBox()
        msgBox.setText('What to do?')
        msgBox.addButton(QtGui.QPushButton('Accept'), QtGui.QMessageBox.YesRole)
        msgBox.addButton(QtGui.QPushButton('Reject'), QtGui.QMessageBox.NoRole)
        msgBox.addButton(QtGui.QPushButton('Cancel'), QtGui.QMessageBox.RejectRole)
        ret = msgBox.exec_()


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

答案 1 :(得分:0)

manuel-gutierrez,为什么要继承QDilaog?您可以从QMessageBox继承。它更简单,代码更少

import sys
from PyQt4.QtGui import QMessageBox, QPushButton, QApplication
from PyQt4.QtCore import Qt

class ErrorWindow(QMessageBox):
    def __init__(self, parent=None):
        QMessageBox.__init__(self, parent)
        self.setWindowTitle("Example")

        self.addButton(QPushButton("Yes"), QMessageBox.YesRole )
        self.addButton(QPushButton("No"), QMessageBox.NoRole)
        self.addButton(QPushButton("Cancel"), QMessageBox.RejectRole)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = ErrorWindow()
    ex.setText("some error")
    ex.show()

    sys.exit(app.exec_())