Python PyQt:转换标准按钮

Python PyQt:转换标准按钮,python,qt,pyqt,translation,button,Python,Qt,Pyqt,Translation,Button,如何从QMessageBox轻松转换标准按钮(是、否)?我不能在这些参数上使用self.tr,所以我想用其他简单的方法实现它。我必须使用整个翻译系统吗?你确定必须自己翻译吗?在其他工具包中,标准按钮会自动转换为用户使用的语言。最快的方法如下: mymessagebox.button(mymessagebox.Yes).setText("Yes, please!") mymessagebox.button(mymessagebox.No).setText("No, thanks.") 请参阅QM

如何从QMessageBox轻松转换标准按钮(是、否)?我不能在这些参数上使用self.tr,所以我想用其他简单的方法实现它。我必须使用整个翻译系统吗?

你确定必须自己翻译吗?在其他工具包中,标准按钮会自动转换为用户使用的语言。

最快的方法如下:

mymessagebox.button(mymessagebox.Yes).setText("Yes, please!")
mymessagebox.button(mymessagebox.No).setText("No, thanks.")
请参阅QMessageBox文档了解所有可能的信息。

以下是我的做法:

首先,需要将
qt_LOCALE.qm
文件复制到应用程序目录中。我的看法是:

cp /usr/share/qt4/translations/qt_fr.qm .
其次,您需要为您的应用程序加载一个转换器

application = QApplication(argv)

locale = QLocale.system().name()
qtTranslator = QTranslator()
if qtTranslator.load("qt_"+locale):
    application.installTranslator(qtTranslator)

main_window = QMainWindow()
main_window.show()

exit(application.exec_())

如果要将是/否转换为当前语言,通常设置系统语言就足够了。否则,试试纳蒂姆的建议


如果需要自定义文本:静态方法(如question()等)不允许自定义按钮文本。这是不幸的,因为“是”/“否”对话框被认为是糟糕的风格(它们不是描述性的,人们必须阅读整个信息,很容易误解什么是“是”和什么是“否”,并意外地否定它们)。对于自定义文本,必须直接使用QMessageBox。我建议您自己编写接受可选按钮文本的静态方法。

不,我更希望自动翻译它们。但我不知道如何实现这一点。你使用的是什么操作系统?你试过使用其他语言登录吗?Ubuntu 9.10我所有的东西都是波兰语的。好吧,这不是我真正需要的-我使用的是提问方法,我无法访问QMessageBox实例来设置此文本。我可以通过其他方式实现这一点吗?