PyQt6 uic 修改ui编译器代码生成 方便实现ui和逻辑代码分离提高效率

使用PyQt6 uic 在终端生成py代码命令如下:

python -m PyQt6.uic.pyuic uifile.ui -o uifile.py

在pycharm的设置如下:

通过PyQt附带的designer设计好UI后,通过uic可以将ui文件转换为py文件, 生成py文件后类似下面的代码:

class Ui_Frame(object):
    def setupUi(self, Frame):
    # ...

ui类默认从object派生,如果直接使用该文件进行后续开发,需要将object替换为QWidget才能将界面显示出来,类似下面的代码

from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtWidgets import QWidget


class Ui_Frame(QWidget):
    def __init__(self):
        super(Ui_Frame, self).__init__()
        self.setupUi(self)

    def setupUi(self, Frame):
        pass
        # ...

而且如果后期一旦界面更新,需要重新生成文件的时候内容会被覆盖,不利于界面和代码的分离,每次手动修改也麻烦,于是想到能不能修改编译器代码生成把ui代码类(Ui_Frame)的生成修改一下,改成上图所示的那样,业务逻辑在Ui_Frame的派生类进行处理,这样每次变更ui重新生成代码,对于业务逻辑处理的影响降到最小

通过翻看uic的源码 (site-packages\PyQt6\uic 路径下),可以实现上面的修改

我这边的实现修改了三个文件:

site-packages\PyQt6\uic\pyuic.py

site-packages\PyQt6\uic\compile_ui.py

site-packages\PyQt6\uic\Compiler\compiler.py

修改步骤如下:

1.pyuic.py文件的修改&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值