You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python中QtWidget QMessageBox.question对话框的按钮文本

如何修改Python中QtWidget QMessageBox.question对话框的按钮文本

嗨,这个问题我之前也碰到过,默认的英文按钮确实不太贴合需求,其实Qt给了我们很灵活的自定义方式,不用发愁~

最简单的思路是放弃QMessageBox.question这个快捷静态方法,手动创建QMessageBox实例来定制按钮文本,具体代码示例如下:

from PyQt5.QtWidgets import QMessageBox, QWidget

class YourWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.open_custom_dialog()

    def open_custom_dialog(self):
        # 创建对话框实例
        msg_box = QMessageBox(self)
        msg_box.setWindowTitle("ask")
        msg_box.setText("example text")
        
        # 添加自定义按钮,指定文本和对应的角色(Yes/No角色用来匹配逻辑判断)
        ja_btn = msg_box.addButton("Ja", QMessageBox.YesRole)
        nein_btn = msg_box.addButton("NEIN", QMessageBox.NoRole)
        
        # 显示对话框
        msg_box.exec_()
        
        # 判断用户点击的按钮
        if msg_box.clickedButton() == ja_btn:
            print("用户选择了Ja")
        elif msg_box.clickedButton() == nein_btn:
            print("用户选择了NEIN")

这种写法的好处是完全可控,你可以给按钮设置任意语言的文本,而且通过clickedButton()能准确判断用户的选择逻辑。

如果是使用PyQt6,代码逻辑基本一致,只是枚举的写法稍有调整(比如QMessageBox.YesRole会变成QMessageBox.ButtonRole.YesRole),核心思路不变。

备注:内容来源于stack exchange,提问作者Sina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 13:52:38