这篇文章默认读者已熟悉python的语法并熟练使用.所以这里不对python的基础语法进行过多赘述.只针对PyQt的常用指令进行描述,使初学者快速入门.
一.PyQt常用模块
我们在使用PyQt进行上位机开发时,我们首先要认识它的常用模块,需要某个功能,导入相应的模块,然后再引用模块中的函数进行想要功能的开发.即使现在有AI的帮助,但是也是建立在我们认识代码的前提下进行的.所以熟悉PyQt的常用模块是十分必要的.
PyQt中有非常多的功能模块,开发中最常用的功能模块主要有三个:
- QtCore:包含了核心的非GUI的功能。主要和时间、文件与文件夹、各种数据、流、URLs、mime类文件、进程与线程一起使用
- QtGui:包含了窗口系统、事件处理、2D图像、基本绘画、字体和文字类
- QtWidgets:包含了一些列创建桌面应用的UI元素
PyQt的其它模块
- QtMultimedia:负责处理多媒体的内容和调用摄像头
- QtBluetooth:负责查找和连接蓝牙
- QtNetwork:负责网络编程
- QtPositioning:负责定位相关
- Enginio:包含了通过客户端进入和管理Qt Cloud
- QtWebSockets:实现了WebSocket协议
- QtWebKit:包含了一个基WebKit2的web浏览器QtWebKitWidgets:包含了基于QtWidgets的WebKit1的类
- QtXml:负责处理xm
- QtSvg:负责显示SVG内容
- QtSql:提供了处理数据库的工具。
- QtTest:提供了测试PyQt5应用的工具
二.PyQt创建窗口
from PyQt5.QtWidgets import QApplication,QWidget
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
导入模块import 后面的QApplication,QWidget是QtWidgets模块中的控件,分别的功能是创建应用程序和创建窗口.这只是其中的两个控件,我们在使用时可以直接用*代替,表示全部引用.我们就不必一个一个引用.代码如下
from PyQt5.QtWidgets import *
上面这段代码,已经已经创建了一个最基础的空白窗口.需要注意的是:当我们在其中开发功能时,大部分时间只需关注 2.创建窗口_和3.显示窗口_下面的代码即可,大部分功能都是在这两部分中实现的.这就是我们上面代码创建的空白窗口.
三. 窗口标题和图标
应用程序图标是一个小的图像,通常在标题栏的左上角显示。我们在编写图标时,就需要导入QtGui这个模块.
#导入窗口模块
from PyQt5.QtWidgets import *
#导入图形操作模块
from PyQt5.QtGui import *
import sys
#创建应用程序
app = QApplication(sys.argv)
#创建窗口
window = QWidget()
#创建窗口标题
w.setWindowTitle("小崔同学的窗口")
#设置窗口图标
w.setWindowIcon(QIcon("img/qq.png"))
#设置光标提示
w.setToolTip("这是一个标签")
#创建窗口尺寸
w.resize(500,500)
#显示窗口
w.show()
#等待窗口停止
sys.exit(app.exec_())
在PyQt中设置窗口图标时,要先在窗口文件相同的目录下保存想要显示的图标图片.函数括号内放的是: 文件上级目录/文件名
支持的图片格式主要包括但不限于 .png
, .ico
, .jpg
, 或 .svg
等。最常用的格式是 .png
和 .ico
,因为它们能很好地支持透明度,这对于图标来说尤为重要。
四.文本和图片
文本控件QLabel包含在窗口模块中,读者在不清楚所需控件时可以利用AI工具查询,由于PyQt所包含的控件过多,所以博主在引用时也经常要查询.
文字
from PyQt5.QtWidgets import QWidget, QApplication, QLabel
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('文本展示')
# -----------------------------------------------start
label = QLabel()
label.setText('第一个文本')
# 将文本控件添加到窗口中
label.setParent(w)
# -----------------------------------------------end
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
我们这里使用的文本和图片,可以把它看做是用提示的文字或者背景图片.
运行程序:
图片:
from PyQt5.QtWidgets *
from PyQt5.QtGui *
import sys
def init_widget(w: QWidget):
# 修改窗口标题
w.setWindowTitle('图片展示')
#------------------ 展示图片 ------------------
label = QLabel()
pixmap = QPixmap('img.png')
label.setPixmap(pixmap)
# 显示到窗口中
label.setParent(w)
# 改变窗口大小
w.resize(pixmap.width(), pixmap.height())
if __name__ == '__main__':
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
init_widget(w)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
我们这里的图片是存在bug的,在拉动控制窗口大小时,图片的大小不能随着窗口同时放大或缩小.我们在后面的推文中会教大家解决的办法.今天只是做一个对PyQt的基础功能的应用
运行程序
由于PyQt的基础功能比较多,我们在后续的博客中会继续为大家进行详解!