Pyqt5在程序中动态修改多界面的语言(英语转中文或者中文转英语)

继上次写完《如何用Pyqt5实现在程序中动态修改界面的语言(英语转中文或者中文转英语)》一文后,有的朋友提出希望在多个界面中实现动态修改界面语言,而我上次写的文章只能实现主界面的动态语言的修改,不满足朋友的要求,故而写成此文以解决朋友的问题,希望此文对您有帮助!

需要说明的是,本文是在《如何用Pyqt5实现在程序中动态修改界面的语言(英语转中文或者中文转英语)》的基础上完成,如果有读者还不是很了解相关原理,请先阅读那篇文章。

先来看看效果吧:

PyQt中多界面动态修改语言(中英文切换)

原理分析:

0.预备的东西——在子模块中定义好一个“翻译家”
class MySubDialog(QDialog, Ui_Dialog):     # UI与逻辑分离
    def __init__(self, parent=None):
        super(MySubDialog, self).__init__(parent)
        self.setupUi(self)
        self.retranslateUi(self)
        # 翻译家
        self.trans = QTranslator()
        pass
1.获得主应用程序对象实例
_app = QApplication.instance()    
2.主应用程序对象实例为子模块重新安装“翻译家”
 _app.installTranslator(self.subDialog.trans)  
3.子模块调用自己的翻译函数retranslateUi,注意函数的参数
self.subDialog.retranslateUi(self.subDialog)

实际操作:

1.在Qt designer中准备好子模块的UI界面,并保存为SubDialog.ui,我的如下图所示,读者根据自己的需求更改。

在这里插入图片描述

2.打开cmd窗口,进入到Subdialog.ui的文件夹中,利用pyuic5这个程序将Subdialog.ui转化为Subdialog.py文件。
pyuic5 -o Subdialog.py SubDialog.ui
3.同样在cmd窗口中,用pylupdate5命令生成.ts文件(具体详情参考先前的文章)
pylupdate5 Window.py Subdialog.py -ts zh_CN.ts    # 中文
pylupdate5 Window.py Subdialog.py -ts en.ts           # 英文
4.用Qt Linguist.exe(这个程序一般在你安装Python的文件夹/Lib/site-packages/pyqt5-tools下面),用它打开刚刚生成的xxxx.ts文件翻译,这里就不配图了,请参考先前的文章。
5.新建一个Subdialog_Logical.py文件,在该文件中新建一个类MySubDialog,在这个类中写自己的逻辑代码,这么做的目的是为了UI与逻辑分离。这里我为了方便,直接在原先的WindowTest.py中定义了该类,并在该类中添加一个成员变量self.trans,即它的翻译家,读者可根据自己的需求自行更改,我的代码如下。
class MySubDialog(QDialog, Ui_Dialog):
    def __init__(self, parent=None):
        super(MySubDialog, self).__init__(parent)
        self.setupUi(self)
        self.retranslateUi(self)
        # 翻译家
        self.trans = QTranslator()
        pass
5.给出更改后的WindowTest.py的源代码,运行即可得到视频中的效果。
from Window import Ui_MainWindow
from SubDialog import Ui_Dialog
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from  PyQt5.QtGui import *
import sys

class MyWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)
        self.setupUi(self)
        # 注意需要在构造函数中初始化子对话框
        self.subDialog = MySubDialog()

        #  翻译家
        self.trans = QTranslator()

        # 连接到槽函数
        self.BtnEn.clicked.connect(self._trigger_english)
        self.BtnCh.clicked.connect(self._trigger_zh_cn)
        self.BtnOpenSubWindow.clicked.connect(self.openSubWindow)

    def openSubWindow(self):
        # 子窗口显示
        self.subDialog.show()

    def _trigger_english(self):
        print("[MainWindow] Change to English")
        self.trans.load("en")
        _app = QApplication.instance()  # 获取app实例

        _app.installTranslator(self.trans) # 重新翻译主界面
        self.retranslateUi(self)

        _app.installTranslator(self.subDialog.trans) # 为子模块安装翻译
        self.subDialog.retranslateUi(self.subDialog) # 翻译子模块
        pass

    def _trigger_zh_cn(self):
        print("[MainWindow] Change to zh_CN")
        self.trans.load("zh_CN")
        _app = QApplication.instance()

        _app.installTranslator(self.trans)
        self.retranslateUi(self)

        _app.installTranslator(self.subDialog.trans)
        self.subDialog.retranslateUi(self.subDialog)

class MySubDialog(QDialog, Ui_Dialog):
    def __init__(self, parent=None):
        super(MySubDialog, self).__init__(parent)
        self.setupUi(self)
        self.retranslateUi(self)
        # 翻译家
        self.trans = QTranslator()
        pass


if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWindow = MyWindow()
    mainWindow.show()
    sys.exit(app.exec_())
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PyQt5是一个基于Qt的Python GUI开发框架,提供了丰富的GUI组件和工具库,MySQL是一个广泛应用的关系型数据库管理系统。PyQt5和MySQL结合起来可以实现MySQL数据库的可视化操作界面。 在实现PyQt5 MySQL界面化的过程,我们可以采用一些常用的工具库,例如PyMySQL和QSqlTableModel。PyMySQL是一个用于Python的MySQL数据库连接库,可以实现与MySQL的交互与操作,使PyQt5能够与MySQL进行连接。而QSqlTableModel是PyQt5自带的模型类,主要用于与数据库表进行交互,这样我们就可以在PyQt5界面上显示和编辑MySQL数据库的数据。 在使用PyQt5和MySQL进行连接和数据交互时,需要配置数据库连接信息,包括MySQL服务器IP地址、端口、用户名、密码等信息,并创建表格模型对象,使用模型对象对MySQL数据库的表进行CRUD操作。在界面设计方面,我们可以使用PyQt5的控件(例如QTableView、QPushButton、QLineEdit)和布局管理器(例如QHBoxLayout和QVBoxLayout)实现简单且美观的可视化操作界面PyQt5 MySQL界面化可以帮助我们更加方便地管理和操作MySQL数据库,具有良好的用户体验和可扩展性,可以为开发人员和企业提供更多的应用场景和商业价值。 ### 回答2: PyQt5是一个Python编程语言下的GUI(图形用户界面)工具包,其主要功能是提供创建图形交互界面的API和库。同时,MySQL是一种常用的开源关系型数据库管理系统。 如果需要将PyQt5与MySQL相结合,以实现对数据库的访问和操作,可以通过使用PyMySQL库实现。这个库可以连接到MySQL数据库,并允许与MySQL服务器交互,例如执行查询、修改或删除操作。 接下来需要创建一个GUI程序,在 PyPlot 或 PyQT5 实现界面化操作。首先需要设置连接属性,包括MySQL的用户名、密码和数据库名称等基本信息。然后需要在GUI界面添加一些控件,例如按钮、文本框和表格等,并配置事件响应函数,以实现对MySQL数据库的操作。 例如,在PyQt5可以使用QTableWidget创建一个表格,通过调用PyMySQL库的函数,将查询结果填入表格。同时,可以使用QLineEdit控件实现用户输入参数,并通过PyMySQL库将其传递给MySQL服务器。 PyQt5和MySQL的结合可以实现一个强大的图形式数据库编辑器,让用户方便地浏览、管理和分析数据。 ### 回答3: PyQt5是一个Python编程语言的GUI开发框架,可以很方便的开发出跨平台的GUI应用程序。MySQL是一款免费、开源的关系型数据库管理系统,可以用来存储和管理大量的数据。将两者结合起来,可以使得用户在图形化界面下操作MySQL数据库,这就是pyqt5 mysql界面化。 在实现pyqt5 mysql界面化的过程,需要使用到PyQt5和MySQL的库。PyQt5库提供了对GUI的支持,而对于MySQL的操作,可以使用Python标准库的MySQLdb库或者是PyMySQL库。在使用PySQL库进行MySQL的操作时,需要注意保证MySQLdb库或者PyMySQL库在Python的运行环境安装好。 在开发界面时,可以使用PyQt5提供的Qt Designer工具,可视化的进行界面设计。在界面可以添加按钮、文本框、表格等组件,通过PyQt5的信号槽机制,将这些组件与MySQL的操作进行绑定。当用户在界面上点击按钮或者提交了查询信息时,就可以调用MySQL的操作进行数据的增删改查操作了。 在实现pyqt5 mysql界面化时,需要注意保证程序的安全性和稳定性。应该遵循最小权限原则,保证只有经过授权的用户才能进行访问数据库。对于用户输入的数据,也需要进行合法性验证和SQL注入的过滤,防止出现安全漏洞。 总之,pyqt5 mysql界面化是一个实现复杂功能的好方法。它让用户可以在一张漂亮的图形界面下操作数据库,从而提高了效率和便捷性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值