代码之家  ›  专栏  ›  技术社区  ›  gruszczy

PYQT:转换标准按钮

  •  4
  • gruszczy  · 技术社区  · 16 年前

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

    4 回复  |  直到 15 年前
        1
  •  10
  •   Natim    15 年前

    我是这样做的:

    首先你需要复制 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_())
    
        2
  •  3
  •   Isaiah    16 年前

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

        3
  •  2
  •   balpha    16 年前

    最快的方法是这样的:

    mymessagebox.button(mymessagebox.Yes).setText("Yes, please!")
    mymessagebox.button(mymessagebox.No).setText("No, thanks.")
    

    有关所有可能的信息,请参阅qmessagebox文档 standard buttons .

        4
  •  0
  •   Frank Osterfeld    15 年前

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

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