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

PyQt5 入门(上):开启 GUI 编程之旅

PyQt5 入门(上):开启 GUI 编程之旅

一、PyQt(上)

1.1 PyQt5 简介和环境搭建

PyQt5 是 Python 语言的 GUI 框架,它将 Qt 库的强大功能与 Python 的简洁易用相结合,让开发者能够高效地创建出美观、交互性强的桌面应用程序,比如各类图形工具、数据管理软件等。

要搭建 PyQt5 开发环境,非常简单。首先确保你的电脑已经安装了 Python 环境,然后打开命令行终端,执行以下命令安装 PyQt5:

pip install PyQt5

如果想要更方便地进行界面设计(比如使用 Qt Designer 工具),还可以安装 PyQt5-tools:

pip install PyQt5-tools

安装完成后,就可以开始 PyQt5 的学习之旅啦。

1.2 第一个 Qt 程序

1.2.1 第一个 Qt 窗口

下面是创建第一个简单 Qt 窗口的代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget# 创建应用程序对象
app = QApplication(sys.argv)
# 创建窗口对象
window = QWidget()
# 设置窗口标题
window.setWindowTitle('我的第一个 Qt 窗口')
# 设置窗口大小
window.resize(400, 300)
# 显示窗口
window.show()
# 进入应用程序的主循环,等待用户操作
sys.exit(app.exec_())

运行这段代码,会弹出一个标题为“我的第一个 Qt 窗口”,大小为 400x300 的窗口,这就是我们的第一个 Qt 程序窗口啦。

1.2.2 窗口的相关设置

我们可以对窗口进行更多设置,比如设置窗口图标、背景颜色等。以下是示例代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIconapp = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('设置丰富的窗口')
# 设置窗口图标,将 icon.png 替换为你的图标文件路径
window.setWindowIcon(QIcon('icon.png'))
# 设置窗口大小
window.resize(500, 400)
# 使用样式表设置窗口背景颜色为浅蓝色
window.setStyleSheet('background-color: lightblue;')
window.show()
sys.exit(app.exec_())

运行后,窗口会显示指定的图标,背景是浅蓝色,更加个性化。

1.2.3 添加模板代码

在实际开发中,为了让代码结构更清晰,我们可以将窗口相关的代码封装成类。以下是一个简单的模板代码示例:

import sys
from PyQt5.QtWidgets import QApplication, QWidgetclass MyWindow(QWidget):def __init__(self):super().__init__()# 调用初始化界面的方法self.initUI()def initUI(self):self.setWindowTitle('模板窗口')self.resize(600, 500)if __name__ == '__main__':app = QApplication(sys.argv)# 创建自定义窗口对象window = MyWindow()window.show()sys.exit(app.exec_())

这样的结构在开发复杂应用时,更便于维护和扩展。

1.3 常用控件

1.3.1 标签 QLabel

QLabel 主要用于显示文字或图片信息。

  • 1.3.1.1 显示文字
    示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabelapp = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('显示文字标签')
window.resize(300, 200)
# 创建标签并设置文字内容
label = QLabel('这是一个显示文字的标签', window)
window.show()
sys.exit(app.exec_())

运行后,窗口中会显示出“这是一个显示文字的标签”这段文字。

  • 1.3.1.2 显示图片
    示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QPixmapapp = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('显示图片标签')
window.resize(400, 300)
label = QLabel(window)
# 加载图片,将 image.jpg 替换为你的图片文件路径
pixmap = QPixmap('image.jpg')
# 设置图片到标签上
label.setPixmap(pixmap)
window.show()
sys.exit(app.exec_())

运行后,窗口中的标签会显示指定的图片。

1.3.2 输入框

输入框用于接收用户的输入内容,PyQt5 提供了单行输入框和文本输入框。

  • 1.3.2.1 单行输入框 QLineEdit
    示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QVBoxLayoutapp = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('单行输入框')
window.resize(300, 150)
layout = QVBoxLayout()
# 创建单行输入框
line_edit = QLineEdit()
# 设置占位提示文字
line_edit.setPlaceholderText('请输入单行内容')
layout.addWidget(line_edit)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())

运行后,可在输入框中输入单行文本,有占位提示文字引导。

  • 1.3.2.2 文本输入框 QTextEdit
    示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit, QVBoxLayoutapp = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('文本输入框')
window.resize(400, 300)
layout = QVBoxLayout()
# 创建文本输入框
text_edit = QTextEdit()
# 设置占位提示文字
text_edit.setPlaceholderText('请输入多行文本内容')
layout.addWidget(text_edit)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())

运行后,可在输入框中输入多行文本,适合大量文字输入。

1.3.3 按钮 QPushButton

QPushButton 是按钮控件,用户点击按钮可触发相应操作。示例代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox, QVBoxLayoutapp = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('按钮示例')
window.resize(300, 200)
layout = QVBoxLayout()
button = QPushButton('点击我')def on_click():# 弹出提示框QMessageBox.information(window, '提示', '按钮被点击了!')# 将按钮的点击信号与槽函数连接
button.clicked.connect(on_click)
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())

运行后,点击“点击我”按钮,会弹出提示框显示“按钮被点击了!”。

1.4 信号和槽

信号和槽是 PyQt5 中用于对象间通信的机制,当一个对象发出信号时,连接到该信号的槽函数会被调用。

1.4.1 按钮的信号与槽

前面按钮的示例已经用到了信号和槽,button.clicked.connect(on_click) 就是将按钮的 clicked 信号连接到 on_click 槽函数,当按钮被点击时,clicked 信号触发,on_click 函数执行。

1.4.2 系统的信号和槽函数

系统也提供了一些信号,比如窗口的关闭信号。我们可以连接这些信号到自定义的槽函数。示例代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBoxapp = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('系统信号示例')
window.resize(300, 200)def close_window():reply = QMessageBox.question(window, '确认', '确定要关闭窗口吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)if reply == QMessageBox.Yes:window.close()# 重写窗口的关闭事件处理函数,连接自定义的槽函数逻辑
window.closeEvent = lambda event: close_window()
window.show()
sys.exit(app.exec_())

运行后,当尝试关闭窗口时,会弹出确认框,询问是否确定关闭,根据选择执行相应操作。


文章转载自:

http://QOKQagCY.kfyjh.cn
http://1WC0OPva.kfyjh.cn
http://DUhtDJc0.kfyjh.cn
http://bsUqNI5B.kfyjh.cn
http://jaCUp6Rs.kfyjh.cn
http://4Nb54Ur4.kfyjh.cn
http://Z1t7NdVe.kfyjh.cn
http://sjxFrzwO.kfyjh.cn
http://oWpztEeb.kfyjh.cn
http://NPlS7cbj.kfyjh.cn
http://umXPLeRo.kfyjh.cn
http://zY5bXiML.kfyjh.cn
http://IDh6SDWs.kfyjh.cn
http://zMQJQWEM.kfyjh.cn
http://bhmR6ttv.kfyjh.cn
http://0IZlHuZv.kfyjh.cn
http://HgJrD8pF.kfyjh.cn
http://PGOmoNjq.kfyjh.cn
http://OjTzcOK2.kfyjh.cn
http://es0nBWQ3.kfyjh.cn
http://cVzUUBVB.kfyjh.cn
http://97HewYu1.kfyjh.cn
http://bTKSgiAc.kfyjh.cn
http://ZvNs7XDD.kfyjh.cn
http://Ju2vvuQb.kfyjh.cn
http://l1k4uebE.kfyjh.cn
http://dtgcCDPp.kfyjh.cn
http://SnSSvaOp.kfyjh.cn
http://WHd8hMUi.kfyjh.cn
http://vLQ3xAOD.kfyjh.cn
http://www.dtcms.com/a/370889.html

相关文章:

  • 本体论中的公理与规则——从经典逻辑到神经符号融合的演进
  • linux 内核 - 内核设计原则
  • Vue3中SCSS的使用指南
  • 音转文模型对比FunASR与Faster_whisper
  • 【YOLOv11】3.Pycharm配置
  • 常用配置文件
  • MySQL运维补充
  • JVM中如何调优新生代和老生代?
  • Transformer 架构的演进与未来方向(RNN → Self-Attention → Mamba)——李宏毅大模型2025第四讲笔记
  • 企业级监控方案对比:Zabbix vs Prometheus
  • 【Kubernetes】知识点总结6
  • 力扣3495. 使数组元素都变为零的最少操作次数 详解
  • 新能源研发,用新型实验记录本:ELN
  • 【LeetCode热题100道笔记】将有序数组转换为二叉搜索树
  • 【LeetCode热题100道笔记】二叉树的直径
  • 2023年ASOC SCI2区TOP,改进元启发式算法+考虑医护人员技能水平的家庭健康护理路径规划,深度解析+性能实测
  • wpf之TextBlock
  • Docker安装Ubuntu搭建Android SDK编译环境
  • Golang中逃逸现象, 变量“何时栈?何时堆?”
  • 我用Claude Code 开发了一个浏览器插件
  • LRU 算法和 LFU 算法有什么区别?
  • Cursor安装使用 与 Cursor网页端登录成功,客户端怎么也登陆不上
  • vue + ant-design-vue + vuedraggable 实现可视化表单设计器
  • 未来教育行业的 Go 服务开发解决方案与实践
  • 为什么ubuntu大文件拷贝会先快后慢?
  • SQL-窗口函数
  • buuctf-鸡藕椒盐味,[NPUCTF2020]EzRSA,[WUSTCTF2020]大数计算
  • OpsManage 项目启动脚本与 Docker 配置深度分析
  • 智能制造——解读97页汽配行业ERP整体解决方案【附全文阅读】
  • LIO-SAM 算法从入门到部署实践