![b2134a7ab5ca03c70dffe44d9a66282a.png](https://i-blog.csdnimg.cn/blog_migrate/315f8f8e0b0d32baf259874bacff7eae.jpeg)
程序界面如果只能显示一种语言的话,那以后怎么能走向国际呢~所以这章就来帮助大家了解下怎么给程序添加其他语种。
笔者发现,为了实现程序动态切换语种的功能,大部分人目前是通过Qt Designer完成界面,并在逻辑代码中调用retranslateUi()方法来实现界面更新,从而达到动态切换语种的目的(许多人也认为这是唯一方法)。但是有部分小伙伴不喜欢用Qt Designer,并想能不能不借助Qt Designer也可以直接实现语言的动态切换以及界面更新?答案是可以的。
笔者接下来会把两种方法都给讲解掉,先来示范下涉及到qt designer的方法:
29.1 设计好界面
我们先使用Qt Designer设计好界面:
![a45975abef409c8ab33ce700115486a5.png](https://i-blog.csdnimg.cn/blog_migrate/1f1e40aaff27676df36dce303e5e33ed.jpeg)
我们就放入一个QComboBox控件、一个QPushButton控件以及一个QLabel控件。将文本设置好,QComboBox中包含三项,分别是:English,中文,français
也就是说当我们选择QComboBox中不同项时,界面的文本翻译会随之变化,这就是该程序要演示的效果。笔者设计好界面后,将其保存到了桌面的example文件夹中,UI文件命名为change_lang.ui。
![766c5742097edc61b1db788f6813008d.png](https://i-blog.csdnimg.cn/blog_migrate/2d54ecad7ef249877fb41f2c362ff7d9.jpeg)
接下来使用pyuic5命令将UI文件转换成py文件:
![ff9ac4cb943cf60feb81a3bdc5bbd8e4.png](https://i-blog.csdnimg.cn/blog_migrate/62b3d58b1c5d525557c4f8e434dc73f3.jpeg)
打开后的py文件内容如下:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'change_lang.ui'
#
# Created by: PyQt5 UI code generator 5.11.2
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(120, 130)
self.gridLayout_2 = QtWidgets.QGridLayout(Form)
self.gridLayout_2.setObjectName("gridLayout_2")
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
self.comboBox = QtWidgets.QComboBox(Form)
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.gridLayout.addWidget(self.comboBox, 0, 0, 1, 1)
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setObjectName("pushButton")
self.gridLayout.addWidget(self.pushButton, 1, 0, 1, 1)
self.label = QtWidgets.QLabel(Form)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 2, 0, 1, 1)
self.