PYQT: Traduzindo botões padrão
-
19-09-2019 - |
Pergunta
Como posso traduzir facilmente botões padrão (sim, não) do QMessageBox? Eu não posso usar o Self.tr nesses argumentos, então gostaria de alcançá -lo de outra maneira simples. Eu tenho que usar todo o sistema de tradução?
Solução
Aqui está como eu fiz:
Primeiro você precisa copiar o qt_LOCALE.qm
Arquivo para o seu diretório de aplicativos. O meu era :
cp /usr/share/qt4/translations/qt_fr.qm .
Em segundo lugar, você precisa carregar um tradutor para o seu aplicativo.
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_())
Outras dicas
Tem certeza de que você precisa traduzi -los você mesmo? Em outros kits de ferramentas, os botões padrão são traduzidos automaticamente para o idioma que o usuário está usando.
A maneira mais rápida é algo assim:
mymessagebox.button(mymessagebox.Yes).setText("Yes, please!")
mymessagebox.button(mymessagebox.No).setText("No, thanks.")
Veja a documentação QMessageBox para todo o possível botões padrão.
Se você deseja traduzir sim/não para o idioma atual, geralmente definir o idioma do sistema deve ser suficiente. Caso contrário, tente com a sugestão de Natim.
Se você deseja textos personalizados: os métodos estáticos como a pergunta () etc. Não permitem textos personalizados do botão. Isso é lamentável, pois os diálogos "sim"/"não" são considerados estilo ruim (eles não são descritivos, é preciso ler toda a mensagem e é fácil entender mal o que significa sim e o que significa não e negar acidentalmente). Para textos personalizados, você deve usar o QMessageBox diretamente. Eu sugiro escrever seus próprios métodos estáticos, aceitando textos opcionais no botão.