在 Python 中创建一个 MCQ 测验游戏

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

Python 编程语言提供了一个标准的图形用户界面 (GUI) 框架,称为 Tkinter,用于开发快速简便的 GUI 应用程序。在本教程中,我们将借助 GUI 开发一个简单的 Python 多项选择测验游戏。我们将使用 Tkinter GUI 框架来创建一个测验。

那么,让我们开始吧。

在 Python 中创建 MCQ 测验游戏的步骤

以下是在 Python 中创建多项选择测验游戏的步骤

步骤 1:我们将创建 JSON 文件来存储数据

步骤 2:我们将使用 Tkinter 框架创建 GUI

现在让我们理解上述步骤。

创建 JSON 文件

为了创建多项选择测验游戏,我们将需要一些数据。我们可以将这些数据定义在一个 JSON 文件中,称为 data.json,其中包含 JSON 数据(即名称/值对)并由一个值数组组成。这些数据将表示问题及其答案以及多个选项。

让我们考虑以下所示的测验样本数据

文件:data.json

说明

在上面的 JSON 文件中,我们以名称/值对的形式以及值数组的形式存储了数据。我们可以看到,我们包含了问题及其答案和不同的选项可供选择。

现在,让我们在下一步创建图形用户界面 (GUI)。

使用 Tkinter 创建 GUI

现在我们将使用 Python 中的 Tkinter 框架创建 GUI。我们将遵循以下步骤

步骤 1:导入模块:Tkinter 和 JSON

步骤 2:创建应用程序的主窗口(容器)

步骤 3:添加小部件以显示数据

步骤 4:为按钮添加功能

步骤 5:在测验中使用数据

注意:Python 和 JSON 文件都将在上面定义的同一目录中创建。

现在我们已经创建了用于存储数据的 JSON 文件,我们将创建一个 python 文件,其中包含测验程序。

导入模块

我们将首先导入项目所需的模块。在本例中,我们导入 Tkinter 框架和 JSON 模块。

让我们看下面的代码片段来说明这一点:

文件:myQuiz.py

说明

在上面的代码片段中,我们导入了 tkinter 中的所有内容以及 json 模块。

创建应用程序的主窗口

现在我们已经导入了所需的模块,我们将使用 Tk 类创建应用程序的主窗口。

让我们看下面的代码片段来说明这一点:

文件:myQuiz.py

说明

在上面的代码片段中,我们实例化了 tkinter 模块的 Tk 类来创建一个 GUI 窗口。我们还使用 geometry()title() 函数设置了此 GUI 窗口的大小和标题。

创建 GUI 的组件

现在我们将定义一个类,我们可以在其中创建 GUI 的组件并向它们添加功能。

我们将从定义 __init__() 方法开始,该方法将用于初始化类的新对象。在此方法中,我们将问题计数设置为零,并初始化显示内容和提供功能所需的所有方法。

现在让我们考虑以下代码片段来理解这一点

文件:myQuiz.py

说明

在以下代码片段中,我们定义了一个类 myQuiz。在此类中,我们定义了 __init__() 方法来初始化项目的功能和属性。我们首先将问题编号的值设置为零,并将问题分配给 displayQuestion() 函数,以便稍后更新它。然后我们初始化了 optSelected 属性,该属性保存一个整数值,用于问题中选定的选项。然后我们显示了当前问题的单选按钮和选项以及用于下一个和退出的按钮。然后我们定义了存储问题数量的属性。最后,我们初始化了用于记录正确答案计数的属性。

现在让我们定义另一个允许我们显示结果的方法。此方法将计算正确和错误答案的数量,然后以消息框的形式在最后显示它们。

这是演示此操作的代码片段

文件:myQuiz.py

说明

在上面的代码片段中,我们将方法定义为 displayResult()。然后我们计算了错误计数的值。然后我们计算了正确答案的百分比,最后显示了一个消息框来显示结果。

我们将定义一个方法,帮助我们在点击“下一步”后检查答案。让我们考虑以下演示此操作的代码片段

文件:myQuiz.py

说明

在以下代码片段中,我们定义了一个名为 checkAnswer() 的方法,该方法帮助我们检查选定的选项是否正确。为此,我们使用了 if 条件语句,如果选定选项的值与答案匹配,则返回 True

现在,我们将定义下一个按钮的方法。

文件:myQuiz.py

说明

在上面的代码片段中,我们定义了一个名为 nextButton() 的方法。在此方法中,我们使用 if 条件语句检查答案是否正确,并将总正确答案计数增加 1。然后我们使用 if-else 语句检查是否到达了问题的末尾,并相应地显示输出。

现在我们将定义存储项目中使用按钮属性的方法。具体来说,我们需要两个按钮 - 第一个是下一个按钮,另一个是退出按钮。

让我们看下面的代码片段来说明这一点:

文件:myQuiz.py

说明

在上面的代码片段中,我们定义了方法 buttons()。在此方法中,我们创建了 Tkinter 库的 Button() 类的两个对象。我们为按钮指定了不同的属性,并使用 place() 函数将它们放置在 GUI 中的位置。

现在我们将定义一个方法,该方法将允许我们取消选择屏幕上的单选按钮。此方法将显示当前问题可用的选项,我们通过问题编号获取这些选项。此外,此方法有助于更新单选按钮的当前问题的每个选项。

让我们考虑以下代码片段来理解这一点

文件:myQuiz.py

说明

在上面的代码片段中,我们定义了方法 displayOptions()。在此方法中,我们将值设置为零。然后我们使用 set() 函数取消选择选项,将其参数指定为零。然后我们使用 for 循环遍历每个问题可用的选项,并将值增加 1。

现在我们将定义方法以在屏幕上显示当前问题。让我们考虑以下演示此操作的代码片段

文件:myQuiz.py

说明

在上面的代码片段中,我们定义了方法 displayQuestion()。在此方法中,我们使用 Tkinter 库的 Label() 类创建一个实例,并为其指定不同的属性。然后我们使用 place() 函数设置标签在屏幕上的位置。

现在,让我们定义方法以在屏幕上显示标题。这是演示此操作的代码片段

文件:myQuiz.py

说明

在上面的代码片段中,我们定义了一个名为 displayTitle() 的方法。在此方法中,我们使用 Tkinter 的 Label() 类定义了标题标签,并使用 place() 函数将其放置。

最后,我们将创建单选按钮以在屏幕上的特定位置选择问题。此方法还会返回一个单选按钮列表,我们稍后将使用该列表向它们添加选项。

文件:myQuiz.py

说明

在上面的代码片段中,我们定义了方法 radioButton()。在此方法中,我们初始化了一个空列表并设置了第一个选项的位置。然后我们使用 while 循环向列表添加选项。我们创建了 Tkinter 的 RadioButton() 类的一个对象,使用了 append() 函数,设置了按钮的位置,并在此循环内将 y 轴的位置增加了 40。最后,我们返回了单选按钮。

在测验中使用数据

由于我们已将所需的小部件及其功能添加到程序中,因此让我们使用存储在 JSON 中的数据。这是以下代码片段,演示了此操作

文件:myQuiz.py

说明

在上面的代码片段中,我们使用了 open() 函数打开 JSON 文件并将其数据加载到主程序。然后我们创建了不同的变量,以问题、其选项和答案的形式存储 JSON 文件中的数据。

我们已成功构建了我们的项目。在执行程序之前,我们将实例化 myQuiz() 类并使用 Tkinter 的 mainloop() 函数。

让我们看下面的代码片段来说明这一点:

文件:myQuiz.py

说明

我们已在上面的代码片段中实例化了 myQuiz() 类。最后,我们使用了 Tkinter 的 mainloop() 函数来显示 GUI 窗口。

完整的项目代码可以在下面找到。

完整项目代码

文件:myQuiz.py

输出

Creating an MCQ Quiz Game in Python
Creating an MCQ Quiz Game in Python
Creating an MCQ Quiz Game in Python
下一主题Python 统计