相关疑难解决方法(0)

如何在PyQt5上动态更改语言(翻译)?

我想知道是否可以在不使用qt设计器制作UI的情况下动态更改语言(翻译)?这意味着我不想使用功能retranslateUi()来更新程序接口。

这是我的代码,但是我停留在标有#1#2#3的行上。不知道我应该使用什么来更新界面。

import sys
from PyQt5.QtCore import Qt, QTranslator
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, 
QComboBox, QVBoxLayout


class Demo(QWidget):
    def __init__(self):
        super(Demo, self).__init__()
        self.button = QPushButton(self.tr('Start'), self)
        self.label = QLabel(self.tr('Hello, World'), self)
        self.label.setAlignment(Qt.AlignCenter)

        self.combo = QComboBox(self)
        self.combo.addItem('English')
        self.combo.addItem('??')
        self.combo.addItem('français')
        self.combo.currentTextChanged.connect(self.change_func)

        self.trans = QTranslator(self)

        self.v_layout = QVBoxLayout()
        self.v_layout.addWidget(self.combo)
        self.v_layout.addWidget(self.button)
        self.v_layout.addWidget(self.label)
        self.setLayout(self.v_layout)

    def change_func(self):
        print(self.combo.currentText())
        if self.combo.currentText() == '??':
            self.trans.load('eng-chs')
            _app = QApplication.instance()
            _app.installTranslator(self.trans)
            # 1

        elif self.combo.currentText() == 'français':
            self.trans.load('eng-fr')
            _app = QApplication.instance()
            _app.installTranslator(self.trans)
            # 2

        else:
            _app = QApplication.instance() …
Run Code Online (Sandbox Code Playgroud)

python pyqt pyqt4 pyqt5 qt-linguist

2
推荐指数
1
解决办法
713
查看次数

标签 统计

pyqt ×1

pyqt4 ×1

pyqt5 ×1

python ×1

qt-linguist ×1