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

2024-09-28 18:58:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在PyQt中显示一个带有自定义文本的问题消息框,以便得到类似以下结果:

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()

Tags: youwhichdooptionsettextchooseqtwidgetsqmessagebox
1条回答
网友
1楼 · 发布于 2024-09-28 18:58:49

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

Creates a button with the given text, adds it to the message box for the specified role, and returns it.

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

相关问题 更多 >