使用 PyQt5 在 Python 中创建第一个 GUI 应用程序

17 Mar 2025 | 6 分钟阅读

如今,大多数个人计算机都拥有图形用户界面(GUI)。它为不同计算机技能水平的用户提供了简洁的体验。由于其点选界面,GUI 应用程序可能需要更多资源,但它们通常更易于使用。

PyQt在 Python 中创建跨平台 GUI 应用程序的工具包 之一。如果您已经熟练掌握了这种语言,那么它强大且易于学习。

在本文中,您将学习使用 PyQt 创建 GUI 的基础知识。这要求您对面向对象编程和 Python 都有基本了解。本文将重点讨论 PyQt,而不是深入基础 Python 概念。

描述 PyQt

Qt 是一个 跨平台 应用程序开发 框架,PyQt 是它的 Python 连接器。使用 PyQt 的好处是,您可以使用像 Python 这样简洁而强大的语言创建 GUI 应用程序。它提供了 Qt API 的所有功能。

负责 PyQt 的创建和维护的组织称为 Riverbank ComputingPyQt6 是最新稳定版本。根据发布历史,PyQt 主要版本的发布周期与 Qt 一致。

PyQt 代码库的核心是编译的 C++ 和 Python 代码,它是一个复杂的系统。因此,与其他的 Python 库相比,从源代码构建和安装它是一个复杂的过程。

我们可以借助我们希望使用的特定 PyQt 版本的文档来获取完整的安装说明。它提供 GPL 和商业版本,都附带安装说明。

PyQT 的特点

以下是 PyQt 的关键方面

  • 图形用户界面 (GUI)
  • SQL 数据库
  • 网站工具包
  • XML 处理
  • 网络

通过结合这些特性,可以创建复杂的 UI 和独立的应用程序。

什么是事件循环?

在窗口出现在屏幕上之前,有几个关于 Qt 框架中应用程序如何构建的基本概念需要介绍。如果您已经熟悉事件循环,则可以继续进行下一部分。

QApplication 类是所有 Qt 应用程序 的基础。每个应用程序只需要一个 QApplication 对象才能正常工作。此对象包含您的 应用程序的事件循环,这是 控制用户与 GUI 所有交互 的中心循环。

每次用户与您的应用程序交互 - 按下键盘、单击鼠标或移动鼠标 - 都会 生成一个事件 并将其添加到 事件队列 中。每次事件循环迭代时,都会检查队列以查看是否有任何待处理的事件。如果发现一个事件,则将该事件以及控制权传递给相应的事件处理程序。处理完事件后,事件处理程序会将控制权返回给事件循环,以便它可以等待更多事件。每个应用程序只有一个活动的 事件循环

什么是 QMainWindow?

正如我们在上一节中所学到的,Qt 中的每个小部件都可以是一个窗口。例如,如果使用 QPushButton 而不是 QWidget,您将获得一个带有一个按钮的窗口。因此,我们的主窗口得到了增强。

窗口和控件的大小

现在,您可以通过用鼠标抓住任何角落并拖动到所需的大小来轻松调整窗口大小。虽然允许用户调整应用程序大小是个好主意,但有时您可能希望限制最小或最大尺寸,或者将窗口固定为特定大小。

QSize 对象在 Qt 中用于定义大小。它接受 widthheight 参数,顺序如下。

使用 PyQt 创建一个简单的 GUI

让我们创建一个简单的“基本GUI 来感受一下 PyQt。另外,这将有助于从头开始了解此过程。

在继续之前,需要注意的是,PyQt 在其方法和属性名称中使用 camelCase。为了在本教程中保持一致性,将使用 camelCase 而不是 Python 建议的变量和函数命名约定。

我们暂时会故意保持简单明了。我将假设您已经在项目目录中创建了一个 app.py 文件。在继续执行以下说明时,您可以将每个步骤的代码行添加到 app.py 文件中。

步骤 - 1:导入必要的类

PyQt 包含几个内置模块。但在创建 GUI 时,您将最常使用 QtWidgets 模块。您可以使用它的类来构建您的 GUI。

由于我们的目标是开发最基本的“python”GUI,我们将仅使用 QApplicationQWidget 类。首先像这样导入它们:

您可以以类似的方式导入要在应用程序中使用的其他类。

步骤 - 2:启动程序

通过实例化 QApplication,我们必须初始化应用程序。它负责控制应用程序的主要设置和控制方案。因此,在创建任何其他用户界面相关对象之前,您必须创建此类的实例。

如果您希望应用程序接受来自命令行的参数,则可以使用 sys.argv 替换上面代码中提供给 QApplication 的空数组。如果您将 sys.argv 作为参数提供,请确保导入 sys。

步骤 - 3:创建主窗口

主窗口是一个没有父级的控件,通常称为顶级窗口。每个 GUI 都必须有一个主窗口。

现在,我们将创建一个 QWidget 实例并将其设置为我们的默认窗口,如下所示:

在实例化 QWidget 后,您可能还会调用几个其他 QWidget 方法。我们使用了 setWindowTitlesetGeometry 方法来创建我们简单的 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 的输出如下面的屏幕截图所示。

Create the First GUI Application using PyQt5 in Python

结论

在本文中,我们介绍了 PyQt5 在 Python 中是什么以及它对我们有什么用。我们学习了如何使用 PyQt5 创建一个简单的 GUI。我们还了解了各种通用方法,例如用于设置窗口大小的 setGeometry 方法和用于设置窗口标题的 setWindowTitle 方法。在此部分中,我们还讨论了 QApplication 类、QMainWindow 类和 GUI 窗口中的 事件循环。Qt 为控件和窗口之间以及它们与您自己的代码之间的交互提供的技术将帮助您使应用程序更具吸引力和响应性。