python - 如何在 QMessageBox 小部件中居中文本和按钮

标签 python pyqt pyqt5 qmessagebox

我正在制作一个 QMessageBox 并且无法将弹出窗口中的文本和按钮居中。
这是我的消息框代码:

def update_msgbox(self):
        self.msg = QMessageBox(self.centralwidget)
        self.msg.setWindowTitle("  Software Update")
        self.msg.setText("A software update is available. \nDo you want to update now?")
        self.msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
        self.msg.setStyleSheet("QLabel{min-width: 200px;}")
        self.msg.exec_()
这是弹出窗口当前的样子:
enter image description here
有没有办法使文本居中并使按钮居中?

最佳答案

一个可能的解决方案是移除(或在必要时删除)元素并将它们添加回布局:

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMessageBox, QLabel, QDialogButtonBox


class MessageBox(QMessageBox):
    def __init__(self, parent=None):
        super().__init__(parent)
        grid_layout = self.layout()

        qt_msgboxex_icon_label = self.findChild(QLabel, "qt_msgboxex_icon_label")
        qt_msgboxex_icon_label.deleteLater()

        qt_msgbox_label = self.findChild(QLabel, "qt_msgbox_label")
        qt_msgbox_label.setAlignment(Qt.AlignCenter)
        grid_layout.removeWidget(qt_msgbox_label)

        qt_msgbox_buttonbox = self.findChild(QDialogButtonBox, "qt_msgbox_buttonbox")
        grid_layout.removeWidget(qt_msgbox_buttonbox)

        grid_layout.addWidget(qt_msgbox_label, 0, 0, alignment=Qt.AlignCenter)
        grid_layout.addWidget(qt_msgbox_buttonbox, 1, 0, alignment=Qt.AlignCenter)


def main():
    app = QApplication([])

    msg = MessageBox()

    msg.setWindowTitle("Software Update")
    msg.setText("A software update is available.<br>Do you want to update now?")
    msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
    msg.setStyleSheet("QLabel{min-width: 200px;}")

    msg.exec_()


if __name__ == "__main__":
    main()

关于python - 如何在 QMessageBox 小部件中居中文本和按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67476677/

相关文章:

python - tuple(aValidTupleOfTypeString) 没有返回我期望的结果

python - 使用具有多个搜索条件的多个目标变量的 KDtree 在 sklearn 中查找邻居

python - PyQtGraph 0.10.0 : auto range of PlotItem tries to scale TextItem and crashes

python - 在python中的选项中使用空格运行子进程

python - 在 GUI 嵌入图中使用 matplotlib Cursor 小部件

python - 根据 QLabel 包含的文本自动调整 QLabel 的大小

python - PyQt 的 "pyqtProperty"VS python 的标准 "property"

Python 在 PyQt5 应用程序中因 2 个工作线程而崩溃

python - 从列表条目访问 SQL 数据

python - 如何将一行编辑的焦点更改为另一行编辑