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

本文共 4138 字,大约阅读时间需要 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 sys
from PyQt5.QtWidgets import QApplication, QWidget
app = 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 QIcon
w.setWindowIcon(QIcon('web.png')) # 添加窗口图标

工具提示

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

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

动画展示

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

from PyQt5.QtMultimedia import QMovie
movie = 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/

你可能感兴趣的文章
Node.js 异步模式浅析
查看>>
node.js 怎么新建一个站点端口
查看>>
Node.js 文件系统的各种用法和常见场景
查看>>
Node.js 模块系统的原理、使用方式和一些常见的应用场景
查看>>
Node.js 的事件循环(Event Loop)详解
查看>>
node.js 简易聊天室
查看>>
Node.js 线程你理解的可能是错的
查看>>
Node.js 调用微信公众号 API 添加自定义菜单报错的解决方法
查看>>
node.js 配置首页打开页面
查看>>
node.js+react写的一个登录注册 demo测试
查看>>
Node.js中环境变量process.env详解
查看>>
Node.js之async_hooks
查看>>
Node.js初体验
查看>>
Node.js升级工具n
查看>>
Node.js卸载超详细步骤(附图文讲解)
查看>>
Node.js卸载超详细步骤(附图文讲解)
查看>>
Node.js基于Express框架搭建一个简单的注册登录Web功能
查看>>
node.js学习之npm 入门 —8.《怎样创建,发布,升级你的npm,node模块》
查看>>
Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
查看>>
Node.js安装及环境配置之Windows篇
查看>>