ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

4.3 pycharm 配置Qt Designer、PyUIC

4.3 pycharm 配置Qt Designer、PyUIC 一、这是一个关于基础方面的简易介绍。/ PyQt它本身是一个程序开发框架, 这个框架其实就是C语言那边的那个QT的一个实现版。在咱们去说那个PyQt框架之前, 呢, 还是得先把QT是个什么玩意, 还有GUI这个东西到底是啥, 给大伙简单介绍介绍。Qt 它属于那种跨平台的C图形用户界面应用程序开发框架。这框架不仅仅可以用来开发那个图形用户界面的程序, 也能用来开发那些不需要图形用户界面的程序, 好比说控制台工具和服务器之类的东西。因为它是一个面向对象的框架, 所以它用了一些特殊的代码生成扩展, 这个扩展的官方名字叫元对象编译器, 英文缩写是moc, 同时它也用到了一些宏。有了这些东西, 使得它特别容易进行扩展操作, 并且还允许开发者进行真正意义上的组件编程工作。GUI 是图形用户界面 User 的简称是指采用图形方式显示的计算机操作用户界面。在目前, 开发者们在日常开发过程中会经常去使用到的那些图形用户界面控件工具里面, 主要包含了PyQt、Kivy、PyGUI以及一些其他的选项, 这里边有一个叫做PyQt的东西, 它其实是那个叫Qt的官方机构为了专门给某个平台提供图形用户界面的扩展功能而特别制造出来的一个东西。开源软件当中最核心的矛盾在于, 开发者们在使用这类软件去实现自己的私人目的或者商业目标时, 应该如何妥善处理好相关的版权以及潜在收益分配等问题。针对这一关键问题, PyQt 6 直接采用了 GPL 协议作为其授权许可证, 这样的安排让那些准备利用 PyQt 6 来创建新软件的开发者们, 能够获得充分的安心感。二、 PyQt 6这个工具是具备特定功能与特点的, 具体表现如下所示。它是 Qt 的另一个绑定库, 在特点上与 PyQt 很相似, 但是它使用了要求更低的一些许可条款来进行授权管理, 具体而言是 LGPL 这种类型。它在功能层面和接口设计规范上, 能够给开发者带来与使用 PyQt 时非常接近的体验, 因此对于已经掌握了 PyQt 使用方法的开发人员来说, 转向使用这个替代方案不会存在太多的学习障碍和切换成本。当然, 相较于拥有庞大用户基础的 PyQt 版本来讲, 这个替代品在社区层面所获得的支持力度可能会显得稍微薄弱一些, 不过在大多数常规的开发场景中, 它依然是一个值得考虑并且可以正常使用的技术选型方案。三、 6/PyQt 6之间的区别6和PyQt 6, 这两个东西, 它们都是基于一个叫Qt6的平台来的。所以, 你去看它们两的代码, 基本上是一模一样的, 没有什么区别。不过呢, 除了代码相似这点之外, 还有另外两个方面, 是两个最重要的区别。要是你能把这两点搞清楚, 就能解决开发人员在面对6和Py PyQt 6的时候, 大概百分之九十五的那些兼容性问题。第一步是对信号的命名以及槽的命名这两个方面进行说明。对于PyQt 6, 由于其关于信号与槽的命名规则和机制存在不同之处, 那么我们可以采取如下方法来实现它们的统一。from PySide6.QtCore import Signal, Slotfrom PyQt6.QtCore import pyqtSignal as Signal, pyqtSlot as Slot就是再说一说枚举这个问题。6为枚举的选项提供了快捷方式, 比如Qt中的枚举包含了星期一到星期日, 在6里面星期三可以直接用Qt.来表示, 而PyQt 6则需要进行完整的使用Qt..表示。解决这个问题的最简单办法, 是从Qt官方的帮助文档里面去查询枚举的全称路径, 另外的一个方法, 就是去用qtpy这个模块, 用上qtpy这一个模块, 就可以把和PyQt之间的事情给统一起来, 这样直接使用快捷方式就可以了。通过下面的这样一种方法来进行操作, 也就是在命令行界面中去输入pip与qtpy这两个词汇。from qtpy.QtCore import Qt四、搭建PyQt 6环境。使用pyqt64.第一步, 进行PyQt6的安装。pip install pyqt64.进行第2步, 对PyQt6的相关环境开展检测工作。在安装任务完成之后, 要对相关的运行环境执行一下检查工作, 接着为大家提供一个后缀名为.py格式的测试脚本实例:import sysfrom PyQt6 import QtWidgetsapp QtWidgets.QApplication(sys.argv)widget QtWidgets.QWidget()widget.resize(300, 200)widget.setWindowTitle(Hello, Elaine)widget.show()sys.exit(app.exec())在中运行, 或者在命令行窗口中运行如下命令: .py。在系统未出现任何错误提示的状况下, 当弹出相应的窗口画面之时, 这意味着PyQt6运行环境的安装程序已经顺利完成, 可以确认该环境的搭建工作取得成功。4.接下来进行配置, 你需要将 Qt 以及 PyUIC 都配置好。Qt是一个强大的、灵活的可视化GUI设计工具, 它使用起来很简单, 通过拖拽鼠标以及单击按钮这些操作, 用户就能够完成那些复杂的界面设计任务, 并且还能够随时查看效果图是什么样子的, 最终生成出来的用户界面文件的后缀名是.ui。PyUIC 的主要功能, 就是把上面提到的 *.ui* 格式的文件, 去转换生成出对应的*.py*文件。第一步, 我们需要先把pyqt6-tools这个工具给装上, 其具体的安装命令如下所示。pip install pyqt6-tools配置到将其打开, 找到文件菜单栏并点击, 随后在下拉菜单中选择选项。在 Tools 这一栏下面, 还有另外一级菜单也是叫 Tools 在这里面找到那个加号图标也就是 号, 点击它以后就会弹出添加外部工具的一个操作入口, 然后接着去把 Qt 这个东西给它加上。按照要求, 将下列相关信息进行设置。Name: QT Designer这个名字可以随意填Group: PyQt6Program: C:\Users\Administrator\AppData\Local\Programs\Python\Python39\Scripts\pyqt6-tools.exe (自己安装的python路径)Arguments: designerWorking directory: $FileDir$添加 PyUIC配置以下信息Name: PyUIC这个名字可以随意填Group: PyQt6Program: C:\Users\Administrator\AppData\Local\Programs\Python\Python39\Scripts\pyuic6.exe (自己安装的python路径)Arguments: $FileName$ -o $FileNameWithoutExtension$.pyWorking directory: $FileDir$你需要去检查一下安装工作有没有真正落实到位, 具体的表现就是在工具那个选项栏里面, 应该会出现一个叫做PyQt6的工具条目。五、Qt 使用基础开发流程实操点击运行按钮, 随后即可进入QT界面。在主界面的位置, 执行点击创建操作。你可以随随便便地把那些控件一个一个地拽进去, 随后呢就把那个窗体给保存下来, 我这边选择把它保存成为一种扩展名为.ui的文件。等保存的动作结束之后, 把那个界面关掉再看一眼就会发现, 在文件夹里面已经多出来了一个刚刚存好的文件这个文件的格式是 .ui。在咱们到达这个时间节点的时候, 是需要去执行一个转换操作的, 具体来说, 就是要把那个名叫 .ui 的文件变成那个名叫 .py 的文件, 而这个操作只要使用 PyUIC 就可以完成。如果在执行之后还出现了有的警告消息, 那么就有可能去用那个包管理工具, 举个例子说就是pip这个玩意儿, 来进行一次更新操作, 具体的命令写法是pip, 后面再跟上双破折号, 紧接着写一个空格, 然后再写上PyQt6, 注意这里专有名词不能改, 就这样多执行上几次这个更新命令, 等到后面再跑的时候那些警告信息就自然没有地方报了。在程序执行完毕之后, 指定的文件夹内部就会自动产生一个新的脚本程序文件, 其具体形式就如同大家下面所看到的:界面与逻辑分离界面文件是那样一种东西, 这种界面文件由 .ui 进行编译而产生出 .py 文件来, 那么当 .ui 文件发生变化时, 所对应的那一个对应的 .py 文件也会随着发生变化, 我们就把它叫做这样一种由 .ui 文件所经过编译从而得来的 .py 的文件, 我们把这样一种文件称之为界面文件。因为界面文件在每次进行编译操作的时候, 都将会执行一次初始化工作, 所以, 需要新建一个后缀名为 .py 的 源文件来对该界面文件做出调用行为, 那么, 这个新构建出来的文件就可以被称作逻辑文件。假如在将来的日子里, 你想要去更新界面的时候, 只需要对那个后缀叫作 .ui 的文件进行更新的操作, 然后再通过编译的手段把它生成对应的后缀为 .py 的文件就可以了, 完全没有必要再去碰那些负责逻辑处理的文件。这段写的是用来表示逻辑文件的具体代码, 并且它的扩展名为 “.py”, 内容如下。# -*- coding: utf-8 -*-import sysfrom PyQt6.QtWidgets import QApplication, QMainWindowfrom MainWin import *class MyMainWindow(QMainWindow, Ui_MainWindow):def __init__(self, parentNone):super(MyMainWindow, self).__init__(parent)self.setupUi(self)if __name__ __main__:app QApplication(sys.argv)my_win MyMainWindow()my_win.show()sys.exit(app.exec())运行结果六、官方文档在后续的阶段之中, 大家就能够凭借自身的努力来完成对于相关功能以及相应的DIY界面的撰写工作了。
返回列表