QMessageBox更改标准按钮的文本

时间:2016-03-09 09:24:27

标签: python pyqt qmessagebox

我想使用QMessageBox.Question作为图标。但我想改变标准按钮的文字。我不希望按钮的文字是"是"和"不"。我希望他们成为" Evet"和" Iptal"。在这里我的代码。

choice = QtGui.QMessageBox.question(self, 'Kaydet!',
                                    'Kaydetmek İstediğinize Emin Misiniz?',
                                    QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)

2 个答案:

答案 0 :(得分:11)

为此,您需要创建QMessageBox的实例并手动更改按钮的文本:

box = QtGui.QMessageBox()
box.setIcon(QtGui.QMessageBox.Question)
box.setWindowTitle('Kaydet!')
box.setText('Kaydetmek İstediğinize Emin Misiniz?')
box.setStandardButtons(QtGui.QMessageBox.Yes|QtGui.QMessageBox.No)
buttonY = box.button(QtGui.QMessageBox.Yes)
buttonY.setText('Evet')
buttonN = box.button(QtGui.QMessageBox.No)
buttonN.setText('Iptal')
box.exec_()

if box.clickedButton() == buttonY:
    # YES pressed
elif box.clickedButton() == buttonN:
    # NO pressed

答案 1 :(得分:2)

Qt为其库中使用的所有内置字符串提供翻译。您只需要为当前语言环境安装翻译器:

app = QtGui.QApplication(sys.argv)

translator = QtCore.QTranslator(app)
locale = QtCore.QLocale.system().name()
path = QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath)
translator.load('qt_%s' % locale, path)
app.installTranslator(translator)