Comment ajouter un bouton personnalisé à une QMessageBox en PyQt4

JE CODE une application qui a besoin d'un bouton personnalisé dans QMessageBox. j'ai réussi à créer un exemple dans QT designer, qui est donné ci-dessous.

enter image description here

je voulais faire ça dans une boîte QMessageBox.

j'utilise python 2.6.4 et PyQt4. s'il vous plaît, quelqu'un peut-il aider.

8
demandé sur Sudeepth Patinjarayil 2013-03-28 17:07:29

2 réponses

Voici un exemple de création d'une boîte de message personnalisée à partir de la base.

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_())
21
répondu MGP 2016-06-08 05:48:52

manuel gutierrez, pourquoi héritez-vous de QDilaog? Vous pouvez hériter de QMessageBox. C'est beaucoup plus simple et moins de code

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_())
0
répondu Дмитрий Моцик 2018-08-17 15:12:33