QTranslator没有在PyQt5中持久安装

时间:2018-03-17 11:32:51

标签: python python-3.x pyqt pyqt5

我正在使用PyQt5开发应用程序,并且我遇到了与框架的i18n功能相关的问题,特别是所有与QTranslator相关的代码。

正如文档所说,我使用QTranslator对象加载已编译的.qm文件,如下所示:

tr_object = QTranslator()
tr_object.load(current, "lang")
QCoreApplication.installTranslator(tr_object)

问题在于它似乎只是暂时安装它#34;,即如果我之后立即调用translate()它可以正常工作,那么它就像翻译器立即被卸载一样。 / p>

我当前(丑陋)的解决方法是通过每次重新安装翻译器的包装器替换QCoreApplication中的translate()函数,但这会产生非常大的开销,从而减慢所有内容。

我也尝试过使用我的QApplication实例而不是静态QCoreApplication,同样的问题。 QT_TR_NOOP宏也不起作用。

1 个答案:

答案 0 :(得分:0)

Qt并不取得翻译的所有权,因此您需要在python端保留对它的引用,以阻止它被垃圾收集。