PyQt5如何在GUI翻译完成后切换回源语言?
实现Qt GUI翻译后切换回源语言
要在Qt GUI中完成翻译后切换回源语言,核心是移除已安装的翻译器并重新触发界面文本刷新,以下是完善后的代码及说明:
修改后的完整代码
def ChangeLanguage(self, row): # 先移除已存在的翻译器,避免多翻译器冲突 if hasattr(self.ui, 'trans') and self.ui.trans is not None: QApplication.instance().removeTranslator(self.ui.trans) self.ui.trans = None if row > 0: self.ui.trans = QTranslator(self) self.ui.trans.load("GUI/Language/hu.qm") QApplication.instance().installTranslator(self.ui.trans) self.ui.retranslateUi(self) else: # 切换回源语言:无翻译器时,retranslateUi会使用原始的源语言文本 self.ui.retranslateUi(self)
关键逻辑说明
- 清理旧翻译器:每次切换语言前先移除已安装的翻译器,避免多个翻译器同时生效导致的文本混乱
- 切换回源语言:当
row=0时,不加载任何翻译文件,直接调用self.ui.retranslateUi(self)——这个Qt Designer自动生成的函数会在没有翻译器的情况下,将所有控件文本恢复为代码中最初定义的源语言内容
注意事项
- 确保
self.ui.retranslateUi(self)是Qt Designer导出代码时自动生成的函数,它负责遍历所有控件并更新文本 - 若源语言不是英语,无需额外加载翻译文件,Qt默认会使用你在UI设计时填写的原始文本
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

