博客
关于我
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/

你可能感兴趣的文章
Navicat for MySQL 查看BLOB字段内容
查看>>
Neo4j电影关系图Cypher
查看>>
Neo4j的安装与使用
查看>>
Neo4j(2):环境搭建
查看>>
Neo私链
查看>>
nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Nessus漏洞扫描教程之配置Nessus
查看>>
Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
查看>>
NetApp凭借领先的混合云数据与服务把握数字化转型机遇
查看>>
NetBeans IDE8.0需要JDK1.7及以上版本
查看>>
netcat的端口转发功能的实现
查看>>
netfilter应用场景
查看>>
netlink2.6.32内核实现源码
查看>>
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
NetScaler的常用配置
查看>>
netsh advfirewall
查看>>
NETSH WINSOCK RESET这条命令的含义和作用?
查看>>
Netty WebSocket客户端
查看>>
netty 主要组件+黏包半包+rpc框架+源码透析
查看>>
Netty 异步任务调度与异步线程池
查看>>