博客
关于我
PyQt5 学习笔记
阅读量:354 次
发布时间:2019-03-04

本文共 4053 字,大约阅读时间需要 13 分钟。

PyQt5 是一系列 Python 模块组成的 GUI 开发框架,包含超过 620 个类、6000 多个函数和方法,能够在 Unix、Windows 和 Mac OS 等主流操作系统上运行。它提供了两种证书:GPL 和商业证书,适用于不同的开发需求。

PyQt5 的类别主要包括以下几个核心模块:

  • QtCore:包含了 GUI 外的核心非图形功能,如时间、文件与文件夹操作、数据处理、流操作、URL 处理、 MIME 类型管理、进程与线程管理等。
  • QtGui:提供了窗口系统、事件处理、2D 图像和基本绘画功能、字体和文字相关的类。
  • QtWidgets:这是一个基本组件库,包含用于构建 GUI 界面的各种控件,如按钮、文本框、组合框等。
  • QtMultimedia:用于多媒体处理,如音频和视频播放。
  • QtBluetooth:实现蓝牙通信。
  • QtNetwork:提供网络通信功能。

以下是一个简单的 GUI 应用程序示例:

import sysfrom PyQt5.QtWidgets import QApplication, QWidgetapp = QApplication(sys.argv)  # 创建一个应用程序实例w = QWidget()             # 创建一个窗口# 设置窗口大小w.resize(250, 150)# 设置窗口标题w.setWindowTitle('Simple')# 显示窗口w.show()# 进入主循环,处理事件sys.exit(app.exec_())

这个代码创建了一个大小为 250x150 像素、标题为 "Simple" 的窗口,并显示在屏幕上。QApplication 是所有 GUI 应用程序的基础类,负责处理事件和管理应用程序的生命周期。

窗口图标

为了给窗口添加图标,可以使用 QIcon 类:

from PyQt5.QtGui import QIconw.setWindowIcon(QIcon('web.png'))  # 添加窗口图标

工具提示

可以通过设置 tooltips 来为控件添加工具提示:

QToolTip.setFont(QFont('SansSerif', 10))  # 设置提示框字体w.setToolTip('这是一个 QWidget widget')  # 为窗口设置工具提示

动画展示

如果需要在 GUI 中显示动画(如 GIF 格式图片),可以使用 QMovie 类:

from PyQt5.QtMultimedia import QMoviemovie = QMovie('animation.gif')  # 创建一个动画实例movie.start()                   # 开始播放动画

主窗口设计

在 Qt 中,主窗口通常继承自 QMainWindow 类,这样可以方便地创建一个包含多个功能区域的复杂界面。以下是一个简单的主窗口结构示例:

from PyQt5.QtWidgets import (QMainWindow, QAction, QHBoxLayout, QLabel,                          QToolButton, QMenu, QMenuBar)class MainWindow(QMainWindow):    def __init__(self):        super().__init__()        self.setWindowTitle('MainWindow')        self.setGeometry(800, 600, 800, 600)        # 创建菜单栏        menubar = QMenuBar()        file_menu = QMenu('File')        menubar.addMenu(file_menu)        # 创建工具栏        toolbar = QToolBar()        self.addToolBar(toolbar)        # 创建布局        layout = QHBoxLayout()        # 添加控件        self.label = QLabel('这是一个 QLabel控件')        self.button = QToolButton()        self.button.setText('点击我')        self.button.clicked.connect(self.buttonClicked)        self.menu = QMenu()        self.menu.addAction(QAction('显示提示', self, triggered=self.showTooltip))        self.menu.addAction(QAction('退出', self, triggered=self.close))        # 设置布局        layout.addWidget(self.label)        layout.addWidget(self.button)        layout.addWidget(self.menu.menuButton())        self.setLayout(layout)        # 创建动作        self.action_show = QAction('显示提示', self)        self.action_show.triggered.connect(self.showTooltip)        # 设置窗口图标        self.setWindowIcon(QIcon('web.png'))    def buttonClicked(self):        print('按钮被点击了!')    def showTooltip(self):        self.setToolTip('这是一个 QToolTip')    def closeEvent(self, event):        if self.action_show.isChecked():            print('用户选择了退出')        super().closeEvent(event)

初始化 UI

在 Qt 中,通常会使用 setupUi 方法来初始化 GUI 界面布局。以下是一个简单的示例:

from PyQt5.QtWidgets import (QWidget, QVBoxLayout, QPushButton, QHBoxLayout,                          QLabel, QProgressBar, QComboBox)class Example(QWidget):    def __init__(self):        super().__init__()        self.setGeometry(300, 300, 300, 200)        self.setWindowTitle('GUI 示例')        # 创建布局        layout = QVBoxLayout()        # 添加控件        self.btn = QPushButton('点击我')        self.btn.clicked.connect(self.btnClick)        self.btn.setStyleSheet('background-color: blue; color: white;')        self.btn.setFixedSize(100, 40)        self.label = QLabel('这是一个 QLabel控件')        self.label.setStyleSheet('font-size: 20px;')        self.progress = QProgressBar()        self.progress.setValue(50)        self.combo = QComboBox()        self.combo.addItems(['项目一', '项目二', '项目三'])        # 设置布局        layout.addWidget(self.btn)        layout.addWidget(self.label)        layout.addWidget(self.progress)        layout.addWidget(self.combo)        self.setLayout(layout)    def btnClick(self):        print('按钮被点击了!')    def showTooltip(self):        self.setToolTip('这是一个 QToolTip')

通过以上代码,可以创建一个简单的 GUI 应用程序,包含按钮、标签、进度条和下拉菜单等常用控件。每个控件都可以通过设置不同的样式和属性来定制外观和行为。

总结

PyQt5 提供了丰富的 GUI 开发工具和功能,适用于从简单到复杂的应用开发。通过合理搭配各个模块,可以快速构建高效的 GUI 应用程序。如果需要更详细的功能介绍或具体的开发示例,可以参考 PyQt5 的官方文档或相关开发资源。

转载地址:http://xdfr.baihongyu.com/

你可能感兴趣的文章
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>
NIH发布包含10600张CT图像数据库 为AI算法测试铺路
查看>>
Nim教程【十二】
查看>>
Nim游戏
查看>>
NIO ByteBuffer实现原理
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>