PyQt5-简明中文教程

2024-08-27 01:48
文章标签 pyqt5 教程 中文 简明

本文主要是介绍PyQt5-简明中文教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在国外网站上看到一篇介绍 PyQt5 的技术文章,看完觉得不错,翻译成中文分享给大家~

这篇 PyQt5 教程展示了如何使用Python 3QtWindowsMacLinux 上创建 GUI 。 涵盖了为应用创建安装程序。

目录

 

什么是PyQt5?

PyQt 是一个允许使用 PythonQt GUI 框架的库。 Qt 本身是用 C ++ 编写的。 通过在 Python 中使用它,我们可以更快地构建应用程序,同时不会牺牲 C ++ 的大部分速度。

PyQt5 是指 Qt 的最新版本5。 你可能仍会在网上偶尔提到(Py)Qt4 ,但它已经过时且不再受支持。

PyQt 的一个有趣的新竞争对手是 Qt for Python 。 它的 API 实际上是相同的。 与 PyQt 不同,它是根据 LGPL许可的,因此可以在商业项目中免费使用。 它得到 Qt 公司的支持,因而可能是未来的使用的趋势。 我们在这里使用PyQt 的原因是因为它更成熟。 由于 API 非常相似,我们可以稍后将应用程序轻松切换到 Qt for Python

安装PyQt

Python 中管理依赖项的最佳方法是通过虚拟环境。 虚拟环境只是一个包含特定项目库的本地目录。 这与这些库的系统范围安装不同,这将影响您的所有其他项目。

要在当前目录中创建虚拟环境,请执行以下命令:

python3 -m venv venv这会创建 venv / 文件夹。 要在 Windows 上激活虚拟环境,请运行:

调用 venv / scripts / activate.batMacLinux 上,使用:

source venv / bin / activate可以通过 shell 中的(venv)前缀看到虚拟环境处于活动状态:

要立即安装 PyQt ,请输入以下命令:

pip install PyQt5==5.9.2

我们使用版本5.9.2的原因是并非所有 (Py)Qt版本都同样稳定。 这个版本保证有效。如果没什么意外的话- 祝贺你! 你已经成功安装了 PyQt5

创建一个GUI

是时候编写我们的第一个 GUI应用了! 在虚拟环境仍处于活动状态时,启动 Python。 我们将执行以下命令:

首先,我们输入命令 让 Python 加载 PyQt

from PyQt5.QtWidgets import QApplication, QLabel

之后,我们创建一个 QApplication

app = QApplication([])

这是 Qt 的一贯要求:每个 GUI 应用程序必须只有一个 QApplication 实例。 在执行上述行之前,Qt 的许多部分都不起作用。 因此,以后在几乎所有 (Py)Qt 应用程序中都需要它。

上面一行中的方括号[]表示传递给应用程序的命令行参数。 因为我们的应用程序不使用任何参数,所以我们将括号留空。

现在,为了实际看到一些东西,我们创建一个简单的 label

label = QLabel('Hello World!')然后,我们告诉 Qt 在屏幕上显示 label

label.show()

请注意观察您的操作系统,这已经打开了一个小小的窗口:

最后一步是将控制权交给Qt并要求它“运行应用程序,直到用户关闭它”。 通过以下命令完成的:

app.exec_()

如果以上所有这些步骤按预期工作,那么恭喜你! 你刚刚使用 PythonQt 构建了第一个 GUI 应用程序。

窗口部件

我们在 (Py)Qt 应用程序中看到的所有内容都是一个小部件:按钮,标签,窗口,对话框,进度条等。

HTML元素一样,小部件通常是嵌套的。 例如,窗口可以包含一个按钮,该按钮又包含一个标签。

以下屏幕截图显示了最常见的 Qt 小部件:

从上到下,从左到右,它们分别是:

  • QLabel

  • QComboBox

  • QCheckBox

  • QRadioButton

  • QPushButton

  • QTableWidget

  • QLineEdit

  • QSlider

  • QProgressBar

如果您有兴趣,可以下载截图 here 中显示的应用程序代码。

布局

与上面的示例一样,我们的 GUI 很可能包含多个小部件。 在这种情况下,我们需要告诉 Qt 如何定位它们。 例如,我们可以使用 QVBoxLayout 垂直堆叠小部件:

上面的代码可以如下编写:

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
layout.addWidget(QPushButton('Top'))
layout.addWidget(QPushButton('Bottom'))
window.setLayout(layout)
window.show()
app.exec_()

和以前一样,我们实例化了一个 QApplication。 然后,我们创建一个窗口。 我们使用最基本的类型QWidget,因为它只是作为一个容器,我们不希望它有任何特殊的行为。 接下来,我们创建布局并向其添加两个QPushButtons。 最后,我们告诉窗口使用这个布局(以及它的内容)。 与我们的第一个应用程序一样,我们最后调用window.show()app.exec_()

当然还有许多其他类型的布局(例如,QHBoxLayout 可以在一行中布置项目)。

有关概述,请参阅 Qt 官方的文档。

自定义样式

Qt 的优势之一是它对定制款式的支持。 有许多机制可以让您自定义应用程序的外观。 本节概述了一些常用的样式说明。

内置样式

更改应用程序外观的最粗暴简单的方法是设置全局样式

回想一下上面的小部件截图:

下面是使用了一种 Fusion 的样式,效果是这样:

要应用一种样式 ,记得调用app.setStyle(...) 方法

from PyQt5.QtWidgets import *
app = QApplication([])
app.setStyle('Fusion')
...

可用的样式取决于我们使用的系统环境,但通常是 “Fusion”,“Windows”,“WindowsVista”(仅限Windows)和“Macintosh”(仅限 Mac)。

自定义颜色

如果你喜欢一种风格,但想要改变它的颜色(例如,到一个黑暗的主题),那么你可以使用 QPalette 调用app.setPalette(...). 举个例子:

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette
from PyQt5.QtWidgets import QApplication, QPushButtonapp = QApplication([])
app.setStyle('Fusion')
palette = QPalette()
palette.setColor(QPalette.ButtonText, Qt.red)
app.setPalette(palette)
button = QPushButton('Hello World')
button.show()
app.exec_()

将按钮颜色改为红色之后的效果:

Fusion 样式的黑色主题, 参考 here.

样式表

除了上述内容外,这里与 CSS 处理样式类似, 我们还可以通过样式表更改应用程序的外观。

我们可以使用它来添加一些间距:

from PyQt5.QtWidgets import QApplication, QPushButton
app = QApplication([])
app.setStyleSheet("QPushButton { margin: 10ex; }")
button = QPushButton('Hello World')
button.show()
app.exec_()

更多的信息可以参考 Qt's documentation.

信号/插槽

Qt 使用了一种称为 信号/槽 的机制,对诸如用户点击按钮之类的事件做出反应。

以下示例说明了这一点。 它包含一个按钮,单击该按钮时会显示一个消息框:

from PyQt5.QtWidgets import *
app = QApplication([])
button = QPushButton('Click')
def on_button_clicked():alert = QMessageBox()alert.setText('You clicked the button!')alert.exec_()button.clicked.connect(on_button_clicked)
button.show()
app.exec_()

上面突出显示了有趣的一行:button.clicked是一个信号,connect(...)让我们在上面安装一个所谓的slot。 这只是一个在信号发生时被调用的函数。 在上面的示例中,我们的插槽显示了一个消息框。

当使用 C ++ 中的Qt 时,槽很重要,因为槽必须在 C ++ 中以特殊方式声明。 然而,在 Python 中,任何函数都可以是一个槽 - 我们在上面看到了这一点。 出于这个原因,槽和“正常”功能之间的区别对我们来说没什么意义。

信号在 Qt 中无处不在。 当然,您也可以定义自己喜欢的槽。

编译应用程序

我们现在拥有创建响应用户输入的 GUI的基本知识了, 假设我们现在写了一个应用程序,它可以在我们的计算机上运行。 我们如何把它交付给其他人,让别人也可以运行它呢?

你可以要求你的应用程序的用户像我们上面那样安装 PythonPyQt ,然后给他们你的源代码。 但这非常繁琐(而且通常不切实际)。 我们想要的是您的应用程序的独立版本。 也就是说,二进制可执行文件,其他人可以在他们的系统上运行,而无需安装任何东西。

Python 世界中,将源代码转换为自包含可执行文件的过程称为冻结。 虽然有很多库可以解决这个问题 - 例如PyInstallerpy2execx_Freezebbfrezepy2app... - 冻结 PyQt应用程序传统上是一个令人惊讶的难题。

我们将使用一个名为 fbs 的新库,它允许您为 PyQt 应用程序创建独立的可执行文件。 要安装它,请输入命令:

pip install fbs PyInstaller==3.3.1

然后,执行命令

python3 -m fbs startproject

终端如下:

当我们输入 run 命令之后,一个 Windows  应用程序便会启动

这是一个 PyQt5 应用程序,就像我们之前看到的那样。 它的源代码在当前目录的src / main / python / main.py中。 但这里很酷:我们可以使用 fbs 将其转换为独立的可执行文件!

python3 -m fbs freeze

这会将一个自包含的二进制文件放在当前目录的target / MyApp /文件夹中。 您可以将它发送给您的朋友(使用与您相同的操作系统),他们将能够运行您的应用程序!

Tips

请注意,fbs 目前针对 Python 3.5 版本。 如果有不同的版本可能导致以上操作无效, 请安装 install Python 3.5  Mac OS 系统 可以安装 install Python 3.5 with Homebrew.

奖励:创建安装程序

fbs 还允许通过命令为应用程序创建安装程序 python3 -m fbs installer:

Tips

如果是在 Windows  环境,还需要安装 NSIS  之后添加到系统环境路径 PATH

有关如何在现有应用程序中使用fbs的更多信息,请参阅 this article. Or fbs's tutorial.

总结

如果你已经做到这一步了,那么祝贺你!

到现在,我们可以说很好地了解 PyQt(及其各个部分)的用法,以及如何使用Python 编写桌面应用程序。 我们还了解了 fbs 如何创建独立的可执行文件和安装程序。

如果您对本教程有任何疑问或反馈,请随时给我发电子邮件。

这篇关于PyQt5-简明中文教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110286

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

【Shiro】Shiro 的学习教程(三)之 SpringBoot 集成 Shiro

目录 1、环境准备2、引入 Shiro3、实现认证、退出3.1、使用死数据实现3.2、引入数据库,添加注册功能后端代码前端代码 3.3、MD5、Salt 的认证流程 4.、实现授权4.1、基于角色授权4.2、基于资源授权 5、引入缓存5.1、EhCache 实现缓存5.2、集成 Redis 实现 Shiro 缓存 1、环境准备 新建一个 SpringBoot 工程,引入依赖:

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码