Python — PyQt6 制作简易的桌面应用(安装-入门)
目录
一 前言
二 安装环境
1. 编译器
2. 环境库下载
三 代码编写
1. Hello World
效果
2. 练习输入和弹窗功能
效果
四 参考
一 前言
最近,准备学一下python,主要想实现一个mqtt的桌面应用的开发和使用,现在先一步一步去学习,慢慢在上面添加mqtt相关的东西
ok,废话不多说,这些文章主要是记录我自己的开发学习过程,可能有错误,望海涵咯
二 安装环境
1. 编译器
首先我们需要有 PyCharm 和 Python环境
我自己用的版本
附带一个安装地址
PyCharm 2022安装教程http://www.rjgxgj.com/?s=python
2. 环境库下载
下载好环境之后,我们开始安装需要的库
//更新pip
python -m pip install –upgrade pip
//桌面开发库
pip install PyQt6
概述:
PyQt6是一个用于创建桌面应用程序的Python库,它基于Qt v6。Qt是一个跨平台的C++库,用于开发GUI应用程序,以及用于创建多媒体和数据库应用程序的附加库。PyQt6是Qt库的Python绑定,它允许Python程序员使用Qt库来创建具有丰富图形用户界面的应用程序。
主要特点:
- 跨平台:PyQt6和Qt一样,支持Windows、Linux和Mac OS X等多个操作系统。
- 强大的GUI功能:PyQt6提供了创建复杂、功能丰富的图形用户界面所需的所有工具。
- 与Qt库的紧密集成:由于PyQt6是Qt库的Python绑定,它提供了对Qt库中所有功能的完全访问,包括网络编程、数据库访问、多线程编程等。
- 易于使用:Python是一种解释型语言,其语法简洁明了,易于学习和使用,因此PyQt6也易于使用。
- 社区支持:由于Python和Qt都有庞大的用户社区,因此PyQt6也有广泛的社区支持,包括教程、示例代码和第三方插件。
应用场景:
PyQt6的应用场景非常广泛,包括但不限于:
- 桌面应用程序开发:使用PyQt6,您可以创建具有复杂界面的桌面应用程序,如图像处理软件、科学计算工具、数据库应用程序等。
- 多媒体应用程序:PyQt6支持音频和视频处理,因此可以用来创建音乐播放器和视频播放器等多媒体应用程序。
- 游戏开发:尽管PyQt6不是专门用于游戏开发的库,但它可以用来创建简单的2D游戏或游戏原型。
- 教育和培训:PyQt6可以用于创建教学软件、模拟器和交互式学习工具。
- 嵌入式系统:由于PyQt6支持多种操作系统,因此可以用于创建嵌入式系统的用户界面。
//安装 PyInstaller
pip install pyinstaller
作用:打包应用,生成可执行文件
运行以下命令,将你的 Python 脚本打包为可执行文件:
pyinstaller –onefile calculator.py(calculator为自己写的py文件名称)
三 代码编写
1. Hello World
首先最简单的 Hello World 来一个
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel
from PyQt6.QtGui import QIcon, QFont
from PyQt6.QtCore import Qt
# 从QWidget类派生的桌面应用程序窗口类
class MyWindow(QWidget): # QtWidgets模块:包含应用程序类、窗口类、控件类和组件类
# 构造函数
def __init__(self):
super().__init__() # 调用基类的构造函数
self.setWindowTitle('Hello World') # 设置标题
# self.setWindowIcon(QIcon('res/qt.png')) # 可以设置图标
lab = QLabel('Hello World', self) # 实例化标签
lab.resize(800, 640) # 设置标签大小
lab.setFont(QFont('Arial', 32, QFont.Weight.Bold)) # 设置字体字号
lab.setAlignment(Qt.AlignmentFlag.AlignCenter) # 文本在标签内居中
self.show() # 显示窗口
if __name__ == '__main__':
app = QApplication(sys.argv) # 创建应用程序,接收来自命令行的参数列表
win = MyWindow() # 创建窗口,这里初始化的时候不需要QWidget入参
sys.exit(app.exec()) # 应用程序主循环结束后,调用sys.exit()方法清理现场
效果
2. 练习输入和弹窗功能
import sys
# 需要安装PyQt6模块才能导入以下类
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton, QMessageBox
class LoginWindow(QWidget):
def __init__(self):
super().__init__()
self.login_button = None
self.password_input = None
self.password_label = None
self.user_label = None
self.user_input = None
self.initUI()
def initUI(self):
# 设置窗口标题和大小
self.setWindowTitle('登录界面')
self.setGeometry(400, 400, 300, 150)
# 创建垂直布局
layout = QVBoxLayout()
# 创建用户名标签和输入框
self.user_label = QLabel('用户名:', self)
self.user_input = QLineEdit(self)
# 创建密码标签和输入框,并设置为密码模式
self.password_label = QLabel('密码:', self)
self.password_input = QLineEdit(self)
self.password_input.setEchoMode(QLineEdit.EchoMode.Password) # 设置为密码输入模式
# 创建登录按钮,并绑定点击事件
self.login_button = QPushButton('登录', self)
self.login_button.clicked.connect(self.login)
# 将组件添加到布局中
layout.addWidget(self.user_label)
layout.addWidget(self.user_input)
layout.addWidget(self.password_label)
layout.addWidget(self.password_input)
layout.addWidget(self.login_button)
# 设置窗口的主布局
self.setLayout(layout)
def login(self):
# 获取用户名和密码
username = self.user_input.text()
password = self.password_input.text()
# 这里可以添加验证逻辑,例如检查用户名和密码是否正确
# 假设用户名和密码都是 admin 时登录成功
if username == 'admin' and password == 'admin':
# 显示登录成功信息
QMessageBox.information(self, '成功', '登录成功!')
pass # 替换为实际的弹窗代码
else:
# 显示错误信息
QMessageBox.warning(self, '错误', '用户名或密码错误!')
pass # 替换为实际的弹窗代码
# 主函数
def main():
app = QApplication(sys.argv)
login_window = LoginWindow()
login_window.show()
sys.exit(app.exec())
if __name__ == '__main__':
main()
效果
四 参考
Python桌面应用开发之PyQthttps://gitcode.csdn.net/65ea88091a836825ed794124.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6OTE5NzkzLCJleHAiOjE3MzQ5MTY0NjUsImlhdCI6MTczNDMxMTY2NSwidXNlcm5hbWUiOiJoZXJ1aV8yIn0.YRr3u7byPW0xokBIEgb5AmcUZDSO1auYxhBUFc-P3vc&spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~activity-5-131417886-blog-136717828.235%5Ev43%5Epc_blog_bottom_relevance_base6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~activity-5-131417886-blog-136717828.235%5Ev43%5Epc_blog_bottom_relevance_base6&utm_relevant_index=10
作者:阿柒学起来