如何更改PyQt标准按钮的文本?

3
我想在PyQt中显示一个带有自定义文本的问题messageBox,以便获得类似以下结果的结果:
Which option do you choose?

[Option A] [Option B]

我尝试使用以下方法来实现这个目标:
from PyQt5 import QtWidgets

optionA = QtWidgets.QDialogButtonBox.standardButton(QtWidgets.QAbstractButton())
optionA.setText("Option A")

optionB = QtWidgets.QDialogButtonBox.standardButton(QtWidgets.QAbstractButton())
optionB.setText("Option B")

buttonReply = QtWidgets.QMessageBox()
buttonReply.setIcon(QtWidgets.QMessageBox.Question)
buttonReply.setWindowTitle('Options')
buttonReply.setText('Which option do you choose?')
buttonReply.setStandardButtons(optionA | optionB)
buttonReply.setDefaultButton(optionA)
buttonReply.exec()
1个回答

2

QPushButton *QMessageBox::addButton(const QString &text, QMessageBox::ButtonRole role)

创建一个带有给定文本的按钮,将其添加到指定角色的消息框中,并返回该按钮。

from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QDialog, QMessageBox, QPushButton


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

        self.setWindowIcon(QIcon("im.png"))
        self.setWindowTitle("MessageBox")
        self.setFixedSize(400, 300)
        self.initUI()

    def initUI(self):
        button = QPushButton("MessageBox Question", self)
        button.move(50, 60)
        button.clicked.connect(self.onClicked) 

    def onClicked(self):
        messageBox = QMessageBox(self)
        messageBox.setWindowIcon(QIcon("Ok.png"))
        messageBox.setWindowTitle("Options")
        messageBox.setIcon(QMessageBox.Question)
        messageBox.setText("Question")
        messageBox.setInformativeText("Which option do you choose?")
        
        buttonoptionA = messageBox.addButton("optionA", QMessageBox.YesRole)    
        buttonoptionB = messageBox.addButton("optionB", QMessageBox.AcceptRole)  
        messageBox.setDefaultButton(buttonoptionA)
        
        messageBox.exec_()

        if messageBox.clickedButton() == buttonoptionA:
            QMessageBox.information(self, "Information", "Click Buiion: optionA")
        elif messageBox.clickedButton() == buttonoptionB:
            QMessageBox.information(self, "Information", "Click Buiion: optionB")
           

if __name__ == '__main__':
    import sys
    aplicacion = QApplication(sys.argv)
    ventana = MessageBox()
    ventana.show()
    sys.exit(aplicacion.exec_())

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接