使用 PyQt5 在 Python 中制作简单的 FLAMES 游戏

2025年3月17日 | 阅读 12 分钟

本文将演示如何使用 PyQt5 开发一个 FLAMES 计算器。基于两个给定名字的算法,这个 FLAMES 计算器会评估关系并预测它们可能如何发展。

Python 是最受欢迎且高效的编程语言。Python 拥有强大的开发者社区和海量库。代码编写的简洁性是其主要优势之一。它几乎可以应用于任何行业。

FLAMES 这个词代表 Friends(朋友)、Lovers(恋人)、Affectionate(深情)、Marriage(婚姻)、Enemies(敌人)和 Sibling(兄弟姐妹)。尽管这个游戏的结果不能用来判断一个人是否适合你,但和朋友一起玩可能会很有趣。这个游戏仅供娱乐和消遣,不基于任何现实生活场景。它只是朋友们之间的一种娱乐方式,仅此而已。

但在此之前,我们必须了解 PyQt5 在 Python 中的一些重要基础知识。

PyQt 基础知识简介

PyQt 是结合了 Python 编程语言和 Qt 库而创建的工具包。作为 Python 最流行的 GUI 框架之一,PyQt 拥有强大的社区和海量优质文档。

QWidget 类是 PyQt 的基本类之一,它实现了 Widget(控件)。Widget 是用户界面和 GUI 组件的基本组成部分。标签、按钮、菜单、组合框、滚动条、工具栏、文件对话框等都是 Widget 的例子。

Widget 的种类繁多,熟悉它们需要一些时间。本项目将使用最常用的 Widget,它们几乎总是包含在 PyQt 应用程序中。

PyQt 为构建 GUI 程序提供了广泛的 Widget。然而,PyQt5 在许可方面有所更改,并将类重新组织到不同的模块中。

因此,对 PyQt5 的结构有一个广泛的了解至关重要。本节将解释 PyQt5 的内部结构,以及它提供的各种模块、库和 API 类。

要安装 PyQt5,我们需要遵循以下步骤。在使用 PyQt 框架之前,必须先使用 pip 包管理器安装它。

如果你的电脑已经安装了 pip,请使用以下命令安装最新版本的 PyQt:

实现 GUI 的步骤

  1. 创建一个标签,显示“请输入玩家 1 的名字”,并为其设置颜色和几何形状。
  2. 为了获取第一个名字,在第一个名字标签前面放置一个 QLineEdit 控件。
  3. 以同样的方式,创建第二个标签,显示“请输入玩家 2 的名字”,并为其设置颜色和几何形状。
  4. 为了获取第二个名字,在该标签前面放置 QLineEdit 控件。
  5. 创建一个标签来显示结果,并修改其字体、形状和边框。
  6. 在底部创建一个“获取结果”按钮。

后端实现步骤

  1. 让按钮执行某个操作
  2. 在按钮操作中获取两个玩家的名字。
  3. 删除名字之间的空格。
  4. 使用 get() 结果函数获取结果。
  5. 在 obtain result 方法中,使用 delete letter 技术删除句子中常用的字符。
  6. 确定剩余字符数后,使用列表 ["F", "L", "A", "M", "E", "S"] 来表示 FLAMES。
  7. 使用我们计算出的计数,开始删除字母。最后剩下的字母就是结果;给出结果。
  8. 使用 setText 函数将结果设置到标签上。

代码讲解

现在,我们将一步一步地解释代码的每个部分,以便在实现完整代码之前理解它们。

首先,我们将从 PyQt5 的标准 Python 库中导入所有必需的文件到我们的程序中。这些文件只需要在程序开头导入一次,并在整个程序中使用。这些文件包括 QtCore、QtGui、qtwidgets 和 sys。

然后,我们将创建一个名为 **Window** 的新类,并初始化窗口,同时设置窗口的标题和几何尺寸。然后,我们将调用 **UiComponents()** 方法,该方法包含我们窗口中的所有组件,如所有标签、控件、按钮和文本字段,然后使用 **show()** 方法显示所有存在的控件。

接下来,我们将定义 components 方法,然后创建 2 个标签。第一个标签 **name1st_lbl** 用于要求用户输入第一个名字,然后我们将设置其边框、颜色和几何尺寸。第二个标签 **name2nd_lbl** 用于要求用户输入第二个名字,然后我们将设置其边框、颜色和几何尺寸。

然后,我们将创建 2 个行编辑器来提供第一个和第二个名字的输入文本区域。之后,设置它们的几何尺寸。

接下来,我们将创建一个新标签来显示最终的关系结果。然后,我们将设置其几何尺寸、对齐方式、字体样式、边框和背景颜色。我们还将创建一个按钮来获取结果,并设置其几何尺寸,并在按下时添加需要执行的相应操作。

然后,我们将创建一个新函数,该函数定义了按下按钮后需要执行的所有操作和方法。它将首先接收 2 个名字并删除它们之间的空格。然后,创建一个函数,通过使用 if else 条件和循环来删除两个名字中存在的公共字符。之后,两个名字将作为列表存储在两个不同的列表中,首先,列表将被连接起来,然后被合并成一个最终列表。

接下来,我们将创建一个函数来查找两个输入名字之间的关系状态。然后,我们将设置标志的初始值为 true,并启动 while 循环,直到所有相同的字符都被移除。然后,这个新列表将被存储,我们将使用 **"*"** 运算符来切片连接的列表,并将其分成 2 个不同的列表,并计算这两个列表中剩余的总字符数。接下来,我们将为 **FLAMES** 这个词引入缩写列表,其中包含 Friends(朋友)、Love(爱)、Affection(深情)、Marriage(婚姻)、Enemy(敌人)和 Siblings(兄弟姐妹)等关系。其中一个将是最终的关系状态。

然后,我们将保持循环运行,直到最后一个选定的字母在每一轮之后通过使用 "*" 运算符切片列表而被移除。切片完成后,选定的字符将被删除。然后,列表中的剩余字符再次连接起来形成一个单一列表。这个过程会不断重复,直到我们知道最终结果。最终结果给出 FLAMES 中的一个缩写,然后将适当的缩写作为关系状态显示在指定的标签中。

最后,我们将创建包含所有这些组件的 PyQt5 应用程序。我们将创建一个窗口实例,该实例将在用户屏幕上显示,并最终调用 exit 方法以启动应用程序并执行代码以获得期望的输出。

完整代码

输出

上面呈现的关于使用 PyQt5 在 Python 中制作简单 FLAMES 游戏的输出已在下面以截图的形式附上。

Simple FLAMES game using PyQt5 in Python