使用 PyQt5 在 Python 中创建第一个 GUI 应用程序17 Mar 2025 | 6 分钟阅读 如今,大多数个人计算机都拥有图形用户界面(GUI)。它为不同计算机技能水平的用户提供了简洁的体验。由于其点选界面,GUI 应用程序可能需要更多资源,但它们通常更易于使用。 PyQt 是 在 Python 中创建跨平台 GUI 应用程序的工具包 之一。如果您已经熟练掌握了这种语言,那么它强大且易于学习。 在本文中,您将学习使用 PyQt 创建 GUI 的基础知识。这要求您对面向对象编程和 Python 都有基本了解。本文将重点讨论 PyQt,而不是深入基础 Python 概念。 描述 PyQtQt 是一个 跨平台 应用程序开发 框架,PyQt 是它的 Python 连接器。使用 PyQt 的好处是,您可以使用像 Python 这样简洁而强大的语言创建 GUI 应用程序。它提供了 Qt API 的所有功能。 负责 PyQt 的创建和维护的组织称为 Riverbank Computing。PyQt6 是最新稳定版本。根据发布历史,PyQt 主要版本的发布周期与 Qt 一致。 PyQt 代码库的核心是编译的 C++ 和 Python 代码,它是一个复杂的系统。因此,与其他的 Python 库相比,从源代码构建和安装它是一个复杂的过程。 我们可以借助我们希望使用的特定 PyQt 版本的文档来获取完整的安装说明。它提供 GPL 和商业版本,都附带安装说明。 PyQT 的特点以下是 PyQt 的关键方面
通过结合这些特性,可以创建复杂的 UI 和独立的应用程序。 什么是事件循环?在窗口出现在屏幕上之前,有几个关于 Qt 框架中应用程序如何构建的基本概念需要介绍。如果您已经熟悉事件循环,则可以继续进行下一部分。 QApplication 类是所有 Qt 应用程序 的基础。每个应用程序只需要一个 QApplication 对象才能正常工作。此对象包含您的 应用程序的事件循环,这是 控制用户与 GUI 所有交互 的中心循环。 每次用户与您的应用程序交互 - 按下键盘、单击鼠标或移动鼠标 - 都会 生成一个事件 并将其添加到 事件队列 中。每次事件循环迭代时,都会检查队列以查看是否有任何待处理的事件。如果发现一个事件,则将该事件以及控制权传递给相应的事件处理程序。处理完事件后,事件处理程序会将控制权返回给事件循环,以便它可以等待更多事件。每个应用程序只有一个活动的 事件循环。 什么是 QMainWindow?正如我们在上一节中所学到的,Qt 中的每个小部件都可以是一个窗口。例如,如果使用 QPushButton 而不是 QWidget,您将获得一个带有一个按钮的窗口。因此,我们的主窗口得到了增强。 窗口和控件的大小现在,您可以通过用鼠标抓住任何角落并拖动到所需的大小来轻松调整窗口大小。虽然允许用户调整应用程序大小是个好主意,但有时您可能希望限制最小或最大尺寸,或者将窗口固定为特定大小。 QSize 对象在 Qt 中用于定义大小。它接受 width 和 height 参数,顺序如下。 使用 PyQt 创建一个简单的 GUI让我们创建一个简单的“基本”GUI 来感受一下 PyQt。另外,这将有助于从头开始了解此过程。 在继续之前,需要注意的是,PyQt 在其方法和属性名称中使用 camelCase。为了在本教程中保持一致性,将使用 camelCase 而不是 Python 建议的变量和函数命名约定。 我们暂时会故意保持简单明了。我将假设您已经在项目目录中创建了一个 app.py 文件。在继续执行以下说明时,您可以将每个步骤的代码行添加到 app.py 文件中。 步骤 - 1:导入必要的类PyQt 包含几个内置模块。但在创建 GUI 时,您将最常使用 QtWidgets 模块。您可以使用它的类来构建您的 GUI。 由于我们的目标是开发最基本的“python”GUI,我们将仅使用 QApplication 和 QWidget 类。首先像这样导入它们: 您可以以类似的方式导入要在应用程序中使用的其他类。 步骤 - 2:启动程序通过实例化 QApplication,我们必须初始化应用程序。它负责控制应用程序的主要设置和控制方案。因此,在创建任何其他用户界面相关对象之前,您必须创建此类的实例。 如果您希望应用程序接受来自命令行的参数,则可以使用 sys.argv 替换上面代码中提供给 QApplication 的空数组。如果您将 sys.argv 作为参数提供,请确保导入 sys。 步骤 - 3:创建主窗口主窗口是一个没有父级的控件,通常称为顶级窗口。每个 GUI 都必须有一个主窗口。 现在,我们将创建一个 QWidget 实例并将其设置为我们的默认窗口,如下所示: 在实例化 QWidget 后,您可能还会调用几个其他 QWidget 方法。我们使用了 setWindowTitle 和 setGeometry 方法来创建我们简单的 GUI。 setGeometry 方法控制 GUI 在屏幕上的大小和位置。它的函数签名是 setGeometry (x, y, width, height)。宽度和高度参数分别用于设置窗口的宽度和高度,而前两个参数定义了窗口在屏幕上的 x 和 y 位置。 setWindowTitle 方法顾名思义,它设置应用程序的标题。标题可以作为字符串参数提供。如果您不手动设置标题,窗口将没有标题。 步骤 - 4:显示主窗口默认情况下,我们在上一步中创建的窗口是隐藏的。我们需要使用 show 方法来显示它: 步骤 - 5:启动事件循环然后必须通过 exec 方法启动程序来启动事件循环。 也可以使用 app.exec_() 作为替代方法来启动事件循环。 完整代码如果您已完成上述所有五个步骤,则 app.py 文件应包含以下代码: 您必须使用命令 python3 app.py 来运行 app.py,就像运行任何其他 Python 脚本一样。您应该能够看到显示的窗口。窗口的外观很大程度上取决于您的系统。 输出 上面代码创建 GUI 应用程序使用 PyQt5 的输出如下面的屏幕截图所示。 ![]() 结论在本文中,我们介绍了 PyQt5 在 Python 中是什么以及它对我们有什么用。我们学习了如何使用 PyQt5 创建一个简单的 GUI。我们还了解了各种通用方法,例如用于设置窗口大小的 setGeometry 方法和用于设置窗口标题的 setWindowTitle 方法。在此部分中,我们还讨论了 QApplication 类、QMainWindow 类和 GUI 窗口中的 事件循环。Qt 为控件和窗口之间以及它们与您自己的代码之间的交互提供的技术将帮助您使应用程序更具吸引力和响应性。 |
Python Numpy 包中提供了大量复杂的数学函数。借助这些函数,可以在 Python 中处理大型多维数组和矩阵,并对它们执行各种逻辑和统计操作。Python 的 numpy 库使得...
阅读 4 分钟
? RESTful API,或简称为 REST API,是一种遵循表征性状态传输 (REST) 架构原则的 Web 服务。REST 是一组应用于 Web 服务的架构约束,可用于创建高度可伸缩和灵活的 Web ...
阅读 4 分钟
本文将演示如何使用 PyQt5 构建倒计时计时器应用程序。使用计时器(一种用于测量特定时间间隔的特殊时钟)时,我们必须从给定时间倒计时直到它达到零。实现 GUI 的步骤...
5 分钟阅读
学习:一步一步的方法 Python 语言的基本概念对于程序员和网络工程师至关重要。谁是网络工程师,他们做什么?网络工程师计划、执行和监督网络。此外,由于网络复杂多变,他们还会进行检查...
阅读 6 分钟
在本教程中,我们将学习如何使用 Python 读取、写入或对 YAML 文件执行各种操作。我们将讨论 YAML 文件格式、其用法以及如何使用 Python 来操作它。让我们对 YAML 进行简要介绍。什么是 YAML?YAML,缩写...
阅读 12 分钟
asyncio 模块。asyncio 模块具有出色的功能,允许我们编写更高效的 Python 异步应用程序。我们将探讨如何在 Python 中管理异步事件循环。在深入探讨此主题之前,让我们了解什么是异步编程。什么是异步...
7 分钟阅读
简介 Python 是一种健壮而灵活的编程语言,开发可维护且成功的代码需要清晰有效的函数。本文将探讨许多增强 Python 函数的技术,而无需使用繁琐或重复的代码。通过遵循这些清晰的编码实践,您可以制作出...
阅读 4 分钟
Python中的算法 算法超越了计算思维。它是一个分步过程,指定了一系列命令,这些命令以特定顺序执行以获得预期结果。简单地说,算法是旨在解决问题的任何一段代码...
14 分钟阅读
Python 是一种高级、著名的解释型编程语言,由 Guido van Rossum 于 1991 年推出。截至 2022 年,Python 的需求量很大。Web 设计、数据处理、深度学习、信息科学、数据可视化、脚本编写以及其他领域都使用 Python。Python 是一种多功能且易于学习的计算机……
7 分钟阅读
当我们处理 Python 字典时,我们可能会遇到需要从字典中获取选择性键值总和的问题。这个问题可能发生在 Web 开发领域,让我们看看以下解决问题的方法。方法……
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India