系列文章目录
- 一、 Python PyQt5简介
- 二、QtWidgets主要子类:QWidget | QMainWindow | QDialog 代码举例解释,快速了解
前言
本篇文章适合想要学习PyQt5的且为初学者人群(但必须会python的基本语法),我会为大家介绍使用 pyqt 编写的 gui 程序的基本结构,旨在帮助初学者能快速地理清如何使用pyqt
环境:
- windows11
- python3
- pyqt5(已经有pyqt6了,但由于pyqt5还是用得挺多的)
一、PyQt是什么?
简单地说,PyQt = Python + Qt。
python:一门热门的编程语言,既然能看到这篇文章,肯定都会。
Qt:Qt是一个跨平台的C++开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,就是一个用c++编写的gui库,里面都是一些能让计算机 显示出特定图形的和管理这些图形 的代码
PyQt:由于c++学习难度相对较大,用起来有些难受,所以有人就想用能不能简单一点的python来使用qt这个图形库,让开发更有效率。简单地说就是用python使用由c++编写的qt。而PyQt5就是第五个大版本。
二、PyQt5安装
pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple # 使用清华大学的镜像
三、PyQt5程序基本结构
1、PyQt5:QtCore、QtGui、QtWidgets
我们先了解一下pyqt5的三个用的 最多的大模块(因为它还有很多个大的模块)
- QtCore
QtCore 是PyQt5下面的一个模块,QtCore模块涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及到的 time、文件、目录、数据类型、文本流、链接、mime、线程或进程等对象。这部分和我们常见的普通的python的功能挺像的,但是还是有点不同
比如:QFile(qt的文件)、QTimer(qt的计数器) - QtGui
QtGui 是PyQt5下面的一个模块,QtGui模块涵盖多种基本图形功能的类; 包括但不限于:窗口集、事件处理、2D图形、基本的图像和界面 和字体文本。
比如 font = QFont(),一个字体对象 - QtWidgets
在Qt中,生成窗口有三种方式: QWidget | QMainWindow | QDialog (以上都是QtWidgets的子类)页面的主窗口,一般看成一个容器,一个用来作画的画布。
2、示例程序
import sys
# from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class window(QWidget):
# 全体目光向我看齐
def __init__(self, parent = None): # 本类初始化
super().__init__(parent) # 父类(Qwidget)初始化,这是必须的
# 以下为Qwidget的内容(也就是执行时出现的图形),self 这里代表父类Qwidget
# 就是在设置我们看到的图形的属性,比如大小,字体等等
self.resize(200, 50)
self.setWindowTitle("PyQt5")
self.label = QLabel(self)
self.label.setText("Hello World")
# 以下是qtgui
font = QFont()
font.setFamily("Arial")
font.setPointSize(16)
self.label.setFont(font) # 将设定的字体作用于qwidget上
self.label.move(50, 20)
# 到这为止都是编写图形的代码,用到了QtWidgets、QtGui,由于过于简单没用到 QtCore
def main():
app = QApplication(sys.argv) # 程序的起点
# 一个window类的实例,会直接执行__init__(self, parent = None),主要的程序体
# 我接着就看到__init__方法,其实这部分代码不一定要放到__init__中,这段代码的作用就是设定
# 只要在show方法执行前设定完毕,在哪不影响结果
# 图形的属性
ex = window()
# 然后从__init__方法出来之后就到这里了,到这里说明图形以及被我们构造好了
# 调用父类的show方法,表示展示我们所编写的内容
# 一般会一直循环展示
ex.show()
# app.exe() : 执行PyQt5程序,执行的内容从app = QApplication(sys.argv)开始
# 如果执行异常则退出
sys.exit(app.exec())
if __name__=="__main__":
main() # 执行main方法
我们先了解pyqt5运行的基本要点。
- 一般它有一个起点,QApplication;
- 然后我们在中间进行编程,程序会一直循环运行中间的主要的程序体;而中间就是一个大容器,一般为QWidget 或 QMainWindow,也是一个大画布,一个大父组件。其余的都在这之上。我们看到的图形就是这个。
- 最后QApplication([]).exec()开始运行,运行的是中间编写的主要程序体,会循环运行,不是运行一下就直接退出。搞不懂的就看例子吧,例子永远是最能让人理解的。
让我们一步步地解析该程序。总体的过程,执行python程序,从 main()方法开始,接着直接看程序的注释吧。
程序执行结果
总结
以上就是今天要讲的内容,本文仅仅简单介绍了PyQt5,通过这篇文章至少能了解到PyQt5的最简单的结构与基本使用方法。