如何使用 WxPython 构建 GUI 应用程序?

2024年11月16日 | 15 分钟阅读

本教程解释了什么是 GUI 以及如何使用 Python 构建 GUI 应用程序。它还展示了如何利用 wxPython 来创建 GUI。

GUI 应用程序是计算机程序或硬件的图形用户界面。您可以使用不同的语言来构建图形用户界面(GUI)。

Python 是一款功能强大的开源软件语言,可用于各种目的。它也可以与其他语言结合使用来创建新的软件应用程序。以上列表只是如何使用 Python 构建 GUI 应用程序的一小部分选择。它可以完成许多其他编程语言无法完成的任务,包括:从一个源控制多个对象、使用函数创建模块化应用程序结构、根据对象在世界中的位置或作为资源为其提供属性等等。

什么是 GUI?

GUI 是计算机程序或硬件的图形用户界面。GUI 可用于向最终用户呈现信息,并根据数据或通过输入手动输入来做出决策。基于 GUI 的程序的一些示例是 Microsoft Windows、Apple OS X 和 Linux。

Python 可用于创建图形用户界面、创建 Web 应用程序,以及创建桌面应用程序。以上列表只是您可以使用 Python 构建 GUI 应用程序的多种方式中的一小部分。

它可以完成许多其他编程语言无法完成的任务,包括:从一个源控制多个对象、使用函数创建模块化应用程序结构、根据对象在世界中的位置或作为资源为其提供属性等等。

什么是 wxPython?

wxPython 是一个跨平台的 GUI 工具包,支持创建图形用户界面。它使用 wxWidgets 工具包作为其核心,该工具包提供了一个简单而强大的 API 来创建应用程序。

它还支持处理各种输入设备,如鼠标、触摸屏和其他硬件设备。用 wxPython 创建的 GUI 看起来类似于微软的 Windows、OS X 或 Linux GUI。例如,一个可以用来创建计算器的 wxPython GUI 如下所示。示例计算器应用程序将具有以下功能:基本算术计算器、科学计算计算器和百分比计算器。

示例:wxPython 的应用

现在您知道了 wxPython 是什么以及如何使用它来构建 GUI,让我们看一个使用它的示例应用程序。这个例子是一个简单的待办事项列表应用程序。它有一个显示任务列表的 GUI,还允许用户添加新任务并将任务标记为已完成。此应用程序使用以下代码来创建 GUI 并处理用户提供的输入。GUI 显示在一个表单中,用户可以在其中输入文本并单击提交按钮添加新任务,或单击完成按钮将任务标记为已完成。此示例应用程序如下所示。在上面的示例中,输入由 requestAddTask() 函数处理。requestAddTask() 函数接受 taskID 和一个 Task 对象作为输入。添加后,taskID 存储在一个列表中并显示在 GUI 中。GUI 在 onLoad() 函数中创建。

安装 wxPython 的步骤

在自己的计算机上安装 wxPython 是初学者程序员开始学习的好方法。本教程将为在任何计算机上安装 wxPython 提供全面的指南,包括针对不同操作系统的说明。

引言

wxPython 是一个开源软件库,有助于在 Python 编程语言中创建图形用户界面 (GUI)。它建立在 wxWidgets(一个开源 C++ 框架)之上,为用户提供了访问各种小部件和其他 UI 元素的途径。安装 wxPython 的目的是让用户更容易地使用 Python 创建 GUI 应用程序。

前提条件

在开始安装过程之前,需要满足一些要求。首先,用户必须在他们的计算机上安装 Python。建议安装最新版本的 Python,因为 wxPython 旨在与最新版本一起工作。用户还必须安装适当版本的 pip,这可以通过在命令行中运行命令 'pip install -U pip' 来完成。

第 1 步:下载 wxPython

一旦满足了先决条件,用户就可以从在线可用的众多链接之一下载 wxPython。wxPython 的官方网站是 https://www.wxpython.org/,用户可以从那里下载最新版本的软件。下载与操作系统以及用户计算机上安装的 Python 版本相对应的版本非常重要。

第 2 步:安装

下载完成后,用户必须在他们的计算机上安装 wxPython。安装过程根据用户计算机上安装的操作系统略有不同。

对于 Windows 用户,他们必须打开命令提示符窗口,导航到他们下载 wxPython 的位置,然后运行命令 'pip install ',其中 应替换为下载文件的文件名。

对于 Mac 用户,他们必须打开一个终端窗口并导航到他们下载 wxPython 的目录,然后运行命令 'python setup.py install'。

对于 Linux 用户,他们必须打开一个终端窗口并导航到他们下载 wxPython 的目录,然后运行命令 'sudo python setup.py install'。

第 3 步:验证安装

在计算机上安装 wxPython 后,验证其是否已正确安装非常重要。这可以通过在 Python 的交互式 shell 中运行简单的测试来完成。第一个测试应该是导入模块 'wx',看看它是否正常工作。如果正常,则意味着 wxPython 已正确安装。

第二个测试应该是调用函数 'wx.version()',看看它是否返回一个有效的版本号。如果返回,则意味着 wxPython 已正确安装并准备好使用。

在使用 wxPython 构建 GUI 应用程序的过程中创建一个骨架应用程序

第 1 步:安装 wxPython:要开始使用 wxPython 创建 GUI 应用程序,您首先需要安装该库。这可以通过从 wxPython 网站下载相应的二进制包并运行安装程序来完成。

第 2 步:创建一个骨架应用程序:一旦您安装了 wxPython,您就可以开始创建骨架应用程序。这涉及到创建一个框架、添加小部件和处理事件。

第 3 步:创建一个框架:框架是您的应用程序的主窗口,所有小部件都将放置在其中。可以使用 wx.Frame 类创建它,该类接受父窗口、窗口标题、大小和位置等参数。

第 4 步:添加小部件:小部件是可以添加到您的框架中的元素,例如按钮、文本框和菜单。可以使用 wx.Frame.AddWidget() 方法添加它们,该方法接受小部件类的实例以及任何其他参数,如大小和位置。

使用的小部件类型有:-

  • 按钮:用于启动一个动作或事件,例如点击“提交”或“取消”按钮。
  • 标签:用于在 UI 中显示文本或图像。
  • 文本框:用于接收用户的输入,例如输入用户名或密码。
  • 单选按钮:用于向用户呈现一组互斥的选项。
  • 复选框:用于向用户呈现一组可以独立选择的选项。
  • 列表框用于显示一个项目列表,用户可以从中进行选择。
  • 组合框:类似于列表框,但带有一个下拉选项列表。
  • 菜单栏:用于为应用程序创建菜单系统。
  • 工具栏:用于为用户提供对常用功能的快速访问。

动态调整大小

要使用尺寸器 (sizer),您首先创建尺寸器的一个实例,然后使用 Add() 方法向尺寸器添加小部件。尺寸器会根据其布局规则来负责定位和调整小部件的大小。然后,使用 SetSizer() 方法将尺寸器与框架或面板关联起来,这允许尺寸器控制框架或面板内小部件的布局。

每种类型的尺寸器都有其优缺点,选择使用哪种尺寸器取决于应用程序的具体要求。

尺寸器用于在框架或面板内动态调整和定位小部件。有几种可用的尺寸器类型,包括:-

  • BoxSizer:将小部件沿垂直或水平线布局,允许小部件按行或列对齐。
  • GridSizer:将小部件布局在网格中,允许将小部件定位在特定的单元格中。
  • FlexGridSizer:类似于 GridSizer,但能够指定不同的列和行大小。
  • StaticBoxSizer:类似于 BoxSizer,但增加了在小部件周围包含一个静态框的功能。

处理事件:事件是用户与您的窗口交互时发生的操作,例如单击按钮或在文本框中键入。这些事件可以使用 wx.Frame.Bind() 来处理,它接受一个事件类型和一个在该事件被触发时调用的函数。

在 wxPython 中添加和处理事件的过程包括以下步骤

第 1 步:绑定事件处理程序:创建小部件后,需要将事件处理程序绑定到该小部件。事件处理程序是一个函数,当事件发生时将被调用。事件处理程序使用 Bind() 方法绑定到小部件。例如,要将按钮点击事件绑定到一个函数,您可以这样做

源代码

第 2 步:实现事件处理程序:事件处理程序函数接收事件作为参数并执行必要的操作。例如,如果按钮点击事件绑定到函数 on_button_click,实现可能看起来像这样

源代码

触发事件:最后,当事件发生时,事件处理程序函数被调用并执行必要的操作。在上面的例子中,当按钮被点击时,on_button_click 函数被调用并打印消息“Button clicked”。

第 3 步:收尾工作:最后一步是为您的骨架应用程序添加功能和样式。

第 4 步:添加功能:这涉及到向传递给 wx.Frame.Bind() 的函数中添加代码,以便在事件触发时执行某些操作。这可以是任何事情,从调用另一个函数到在屏幕上显示警报消息。

第 5 步:添加样式:样式可以使您的应用程序看起来更专业,对用户更具吸引力。这可以通过设置字体大小和颜色等属性,或使用 CSS 样式技术来完成。

第 6 步:使用 wxPython 创建骨架应用程序的好处:使用 wxPython 创建骨架应用程序允许开发人员轻松快速地创建跨平台的 GUI 应用程序,同时仍然为他们提供对其应用程序设计和功能的完全控制。

设计用户界面 (GUI)

设计用户界面 (UI) 是使用 wxPython 创建一个可工作的 GUI 应用程序的重要一步。

在设计您的 UI 时,需要考虑以下几点

  1. 了解您的应用程序的目的:在设计您的 UI 之前,了解您的应用程序的目的以及用户将执行哪些任务非常重要。这将帮助您确定哪些小部件和布局最适合您的应用程序。
  2. 保持简单:一个简单易用的 UI 通常比一个复杂的 UI 更有效。避免使用太多的小部件或创建一个杂乱的布局。这将帮助用户快速理解和导航您的应用程序。
  3. 使用一致性:一致性对于创建一个专业且易于使用的 UI 非常重要。在整个应用程序中,对类似的小部件使用相同的布局和样式。使用相同的字体、配色方案和间距。
  4. 提供反馈:当用户在您的应用程序中执行操作时,向他们提供反馈。这可以使用对话框、状态栏或其他小部件来完成。这将帮助用户了解他们操作的结果,并更容易地导航您的应用程序。
  5. 使用键盘快捷键:使用键盘快捷键,让用户可以轻松地在您的应用程序中执行常用操作。这将有助于提高您的应用程序的效率,并使其对用户更具可访问性。
  6. 测试您的 UI:在发布您的应用程序之前,与一组用户测试您的 UI 非常重要。这将帮助您在发布应用程序之前识别任何可用性问题并进行改进。

图解

How to build a GUI application with WxPython

创建一个用户界面 (UI)

  • 创建用户界面 (UI) 是使用 wxPython 创建一个可工作应用程序过程中的关键组成部分。UI 是用户与之交互的部分,因此确保它设计良好、用户友好且视觉上吸引人非常重要。
  • 使用 wxPython 创建 GUI 应用程序需要对 wxPython 模块有扎实的理解,以及设计和实现用户界面的能力。通过遵循本文中概述的步骤,您可以创建一个简单的“Hello, World!”应用程序,作为更复杂项目的起点。
  • 创建 UI 的第一步是为主框架创建一个类,该框架将承载这些小部件。该类应继承自 wx.Frame 类,并处理 UI 中小部件的创建和布局。在创建主框架类时,您可以设置框架的标题、大小和位置等属性。
  • 主框架创建后,下一步是定义小部件的功能。这是通过将事件绑定到小部件并创建事件处理程序来实现的。例如,您可能会将按钮点击事件绑定到一个显示消息或执行其他操作的方法。
  • 最后,一旦事件处理程序就位,就该创建应用程序的实例并启动事件循环了。事件循环监听事件并将它们分派给适当的事件处理程序。这是通过调用应用程序实例的 MainLoop() 方法来实现的。

这是“Hello, World!”应用程序的代码示例:-

输出

How to build a GUI application with WxPython

准备一个功能性应用程序

向您的代码添加菜单栏:-

菜单栏是许多 GUI 应用程序的关键组成部分,因为它为用户提供了一种访问应用程序不同功能的方式。在 wxPython 中,菜单栏是使用 wx.MenuBar 类创建的。以下是对在 wxPython 应用程序中创建菜单栏的代码的解释

第一行使用 wx.MenuBar 类创建 wx.MenuBar 对象,第二行使用 SetMenuBar 方法为框架设置菜单栏。SetMenuBar 的参数是已创建的菜单栏对象。

一旦创建了菜单栏,就可以使用 Append 方法向其添加菜单。例如,要添加一个“文件”菜单,可以使用以下代码

源代码

第一行创建 wx.Menu 对象,第二行使用 Append 方法将菜单添加到菜单栏。Append 的第一个参数是 wx.Menu 对象,第二个参数是将为菜单在菜单栏中显示的文本。

创建一个文件菜单

创建文件菜单是 GUI 开发中的一个常见任务,在 wxPython 中,它是通过创建一个 wx.Menu 对象并向其添加菜单项来实现的。以下是对前一个示例中创建文件菜单的代码的解释

wx.Menu 对象是使用 file_menu = wx.Menu() 行创建的。然后,以下几行使用 Append 方法向菜单中添加项目

Append 方法的第一个参数是菜单项的 ID,第二个参数是将为该项显示的文本。在这种情况下,标准 ID wx.ID_NEW、wx.ID_OPEN 和 wx.ID_SAVE 分别用于“新建”、“打开”和“保存”菜单项。

file_menu.AppendSeparator() 这一行向菜单中添加了一个分隔线,用于在视觉上对相关项目进行分组。

最后,使用以下行添加“退出”菜单项

源代码

一旦所有项目都已添加到菜单中,就使用以下行将菜单添加到菜单栏

第一个参数是 wx.Menu 对象,第二个参数是将在菜单栏中为该菜单显示的文本。

绑定事件

在 wxPython 中绑定事件是将特定操作或事件(例如鼠标点击或键盘按键)与在该事件发生时将执行的特定代码片段链接起来的过程。这允许应用程序响应用户输入并根据该输入执行任务。

要在 wxPython 中绑定事件,您需要使用 Bind 方法。Bind 方法接受两个参数:第一个是您要绑定的事件,第二个是当该事件发生时将被调用的函数。

例如,要将鼠标点击事件绑定到一个函数,可以使用以下代码

在这段代码中,button 是一个 wx.Button 对象,而 self.on_button_click 是当按钮被点击时将被调用的函数。

处理事件

在 GUI 应用程序中处理项目是指响应用户与用户界面元素(如按钮、菜单和文本框)的交互过程。在 wxPython 中,这通常通过将事件绑定到函数来完成。当事件被触发时,关联的函数被执行,从而允许应用程序根据用户的输入执行操作。

接下来是绑定事件。因此,在提到绑定事件的代码中,必须完成事件处理过程。

当选择一个菜单项时,会生成一个 wx.EVT_MENU 事件。要处理此事件并在选择菜单项时执行操作,您可以使用 Bind 方法将 wx.EVT_MENU 事件绑定到一个函数。

例如

在这段代码中,file_menu 是一个 wx.Menu 对象,item 是一个已添加到菜单中的菜单项,而 self.on_exit 是当选择该菜单项时将被调用的函数。frame.Bind 行将 wx.EVT_MENU 事件绑定到 self.on_exit 函数。

创建一个编辑对话框。

编辑对话框用于允许用户在图形界面中对一段数据或信息进行更改。它提供一个单独的窗口或弹出界面,可用于以与主应用程序分离的方式输入和修改数据。

创建编辑对话框是为了提供一种用户友好的方式在图形界面中编辑数据。它们用于通过允许用户在不必离开主应用程序的情况下更改数据来改善用户体验。编辑对话框为数据输入提供了一个清晰且集中的界面,这可以减少错误的发生并提高数据的准确性。

源代码

定义了 text_ctrl 成员变量,它是一个 wx.TextCtrl 控件。调用 wx.TextCtrl 构造函数,其中 self 作为第一个参数(以指定父窗口),value 作为 text 参数。这将创建一个带有要显示的文本的文本控件。

源代码

定义了 ok_button 变量,它是一个 wx.Button 控件。调用 wx.Button 构造函数,其中 self 作为第一个参数(以指定父窗口),并标记为“OK”字符串。

在 ok_button 上调用 Bind 方法,将 wx.EVT_BUTTON 事件绑定到 on_ok 方法。这意味着当点击“OK”按钮时,将调用 on_ok 方法。

源代码

定义了 sizer 变量,它是一个 wx.BoxSizer 对象。调用 wx.BoxSizer 构造函数,并以 wx.VERTICAL 作为参数,以指定 sizer 应垂直排列控件。

在 sizer 对象上调用 Add 方法以添加 text_ctrl 和 ok_button 控件。text_ctrl 的 proportion 参数设置为 1,flag 参数设置为 wx.EXPAND,以表示文本控件应占据垂直方向上的所有可用空间。ok_button 的 flag 参数设置为 `wx.ALIGN_RIGHT | wx

完整的编辑对话框代码

源代码

输出

How to build a GUI application with WxPython