当前位置: 首页 > news >正文

PyQt5入门

Python中经常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、PyGUI和Libavg。其中PyQt是Qt(c++语言实现的)为Python专门提供的扩展
PyQt是一套Python的GUI开发框架,即图形用户界面开发框架.。而在Python中则使用PyQt这一工具包(PyQt5、PyQt5-tools、PyQt5-stubs),它是Python编程语言和Qt库的成功融合。

一、PyQt安装

pip install PyQt5 安装PyQt5。
pip install PyQt5-tools 安装Qt工具软件。
pip install PyQt5-stubs 安装PyQt5语法检测包(可选)。
安装完成之后可以在Python的安装目录/Lib/site-packages中找到PyQt5目录。

示例:

main.py文件

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayoutclass MyApp(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# 创建一个垂直布局layout = QVBoxLayout()# 创建一个标签,并设置文本内容label = QLabel("Hello, World!")# 将标签添加到布局中layout.addWidget(label)# 设置窗口的布局self.setLayout(layout)# 设置窗口的大小self.setGeometry(300, 300, 300, 150)# 设置窗口的标题self.setWindowTitle('Hello World')# 显示窗口self.show()# 创建应用程序对象
app = QApplication(sys.argv)# 创建实例
ex = MyApp()# 进入应用程序的主循环,等待事件处理
sys.exit(app.exec_())

执行命令:python main.py

运行过程中,如果出现下列错误。

1、ModuleNotFoundError: No module named 'PyQt5'

说明没有PyQt5安装或安装成功,解决方法:安装PyQt5

pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple

2、ImportError: DLL load failed while importing QtWidgets: 找不到指定的程序。

先卸载PyQt5,再安装PyQt5。

pip uninstall PyQt5
pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple

二、安装PyQt Integration插件。

1、Qt Designer、PyUIC、PyRcc

安装PyQt Integration插件(Qt Designer、PyUIC、PyRcc),可以帮我们自动生成UI相关代码和资源。

Qt Designer:可以通过Qt Designer来编写UI界面,Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。Qt Designer中的操作方式十分灵活,其通过拖拽的方式放置控件可以随时查看控件效果。Qt Designer随PyQt5-tools包一起安装,其安装路径在 “Python安装路径\Lib\site-packages\pyqt5-tools”下。
PyUIC:Qt Designer生成的.ui文件(实质上是XML格式的文件)可以通过pyuic5工具或python转换成.py文件。
命令格式:

pyuic5 -o destination.py source.ui

或者

python.exe -m PyQt5.uic.pyuic  source.ui -o destination.py

PyRcc:在使用PyQt开发界面时,在Qt Designer中使用的图片等资源需要将其编译为py文件,这时需要用到PyRcc工具方便地将qrc文件转换为py文件。
资源文件编写说明
3.1新建resource.qrc(也可以通过Qt Designer生成qrc文件),代码如下:

<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file alias="contacts.png">ico/contacts.png</file>
<file alias="exit.png">ico/exit.png</file>
<file alias="about.png">ico/about.png</file>
<file alias="config.png">ico/config.png</file>
<file alias="help.png">ico/help.png</file>
</qresource>
</RCC>

3.2命令格式:

pyrcc5 -o resource.py resource.qrc

2、在PyCharm中配置Qt Designer、PyUIC、PyRcc

1、点击菜单栏“File”,弹出下拉框,选择“Setting”,弹出设置界面。在设置界面中选择“Tools”→“External Tools”,操作如下图所示。

2、外部工具配置。

名称:QtDesigner
工具设置
    程序:E:\Anaconda\anaconda3\Library\bin\designer.exe
    工作目录:$FileDir$

名称:PyUIC
工具设置
    程序:E:\Anaconda\anaconda3\envs\pytorch\python.exe
    实参:-m PyQt5.uic.pyuic  $FileName$ -o $FileNameWithoutExtension$.py
    工作目录:$FileDir$
或者 
    程序:D:\anaconda3\Scripts\pyuic5.exe
    实参:$FileName$ -o $FileNameWithoutExtension$.py
    工作目录:$FileDir$

名称:PyRcc
工具设置
    程序:D:\anaconda3\Scripts\pyrcc5.exe
    实参:$FileName$ -o $FileNameWithoutExtension$_rc.py
    工作目录:$FileDir$

三、PyQt5使用

1、首先打开或新建一个Python项目,点击菜单栏中的“Tools”,选择“External Tools”,可以看到之前设置好的三个工具,选择“Qt Designer”打开Qt设计工具,步骤如下图所示:

2、打开软件后,在弹出的引导界面选择“Main Window”,然后点击“创建”按钮,创建一个窗体界面,如下图所示:

3、创建简单界面。

最终完成后的界面如下图所示,点击“保存”保存为ui文件并置于项目目录下,比如:untitled9.ui。

4、右键点击ui文件(比如:untitled9.ui),选择“External Tool”,再选择PyUIC,将ui文件转换成py文件。

5、右键点击qrc文件(比如:my.qrc),选择“External Tool”,再选择PyRcc,将qrc文件转换成py文件。

6、编辑ui文件。
6.1)右键点击ui文件(比如:untitled9.ui),选择“External Tool”,再选择QtDesigner,弹出Qt Designer界面。

6.2)在Qt Designer界面,点击“打开”按键。

6.3)弹出对话框,选择ui文件(比如:untitled9.ui),打开。

6.4)打开文件后,就可以编辑ui文件。

7、新建一个python文件(比如:run_untitled.py),测试刚才的ui生成的py文件。

import sys
import untitled9from PyQt5.QtWidgets import QApplication, QMainWindowif __name__ == '__main__':# 实例化,传参app = QApplication(sys.argv)# 创建对象mainWindow = QMainWindow()# 创建ui,引用untitled文件中的Ui_MainWindow类ui = untitled9.Ui_MainWindow()# 调用Ui_MainWindow类的setupUi,创建初始组件ui.setupUi(mainWindow)# 创建窗口mainWindow.show()# 进入程序的主循环,并通过exit函数确保主循环安全结束(该释放资源的一定要释放)sys.exit(app.exec_())

8、运行run_untitled.py

8、使用pyinsaller生成exe文件。

8.1 cmd窗口下,进入工程目录下。

8.2 执行pyinstaller命令,生成exe文件

pyinstaller --onedir --noconsole run_untitled.py --name test

8.3在dist\test目录下,执行test.exe文件。

http://www.lryc.cn/news/417549.html

相关文章:

  • 算法力扣刷题记录 六十九【动态规划基础及509. 斐波那契数】
  • 如何利用Python进行数据分析
  • 如何判断机器学习模型的好坏之LIME和SHAP
  • Android 是如何进行内存管理的
  • 【CSDN平台BUG】markdown图片链接格式被手机端编辑器自动破坏(8.6 已修复)
  • WPF学习(4)- VirtualizingStackPanel (虚拟化元素)+Canvas控件(绝对布局)
  • SQL约束
  • lombok使用@slf4j 运行时提示找不到符号log(Missing POM for org.projectors:lombok:jar)
  • 21. 合并两个有序链表(递归)
  • 学习vue3 三,组件基础,父子组件传值
  • 月木学途开发 2.项目架构
  • FPGA开发——按键控制数码管的设计
  • 【AI学习】[2024北京智源大会]具身智能:具身智能关键技术研究:操纵、决策、导航
  • C语言实现UDP广播
  • 速记Java八股文——Redis 篇
  • CUDA编程05 - GPU内存架构和数据局部性
  • TCP协议程序设计
  • 【C++高阶】:自定义删除器的全面探索
  • Java中的不可变集合、Stream流以及异常处理的
  • LeetCode面试题Day1|LeetCode26 删除有序数组中的重复项、LeetCode80 删除有序数组中的重复项Ⅱ
  • 细说文件操作
  • Vue3从零开始——掌握setup、ref和reactive函数的奥秘
  • C语言练习--屏幕上打印九九乘法表
  • 将tsx引入vue
  • 前端实现签字效果+合同展示
  • [AI Embedchain] 开始使用 - 快速开始
  • Linux网络协议.之 tcp,udp,socket网络编程(三).之多进程实现并发demon
  • Java线程(练习题)
  • MySQL:初识数据库初识SQL建库
  • 关于Redis的集群面试题