Python 中的基于排名的百分位 GUI 计算器

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

Python 等编程语言提供了多种开发图形用户界面(简称 GUI)的选项。在这些用于 GUI 的方法中,Tkinter 是使用最广泛的库。在下面的教程中,我们将借助 Python 中的 Tkinter 库创建一个 GUI 应用程序,以根据排名计算百分位数。

在此之前,让我们简要了解一下百分位数是什么意思。

什么是百分位数?

百分位数是一种统计指标,通常用于识别样本群体中的特定部分。更精确地说,我们使用百分位数来指示特定百分比的样本群体低于该值(所考虑变量的值)。例如,如果我们考虑居住在英国的所有英国人的身高分布;通过说 175 厘米的身高值识别出第 60 个百分位数,这意味着居住在英国的所有英国人中,有 60% 的人身高低于 175 厘米。正如我们可以想象的,百分位数通常用于许多统计研究以及报告对大量人口进行的调查或测量的结果时。

如何计算百分位数?

假设我们已经收集了 n = 69 人的身高。为了评估此分布中提及的百分位数,第一步是将所有值按升序排序。此时,假设我们被要求计算分布的 第 65 个百分位数。我们将计算所谓的排名 k = 百分位数/100。在以下案例中,k = 65/100 = 0.65。现在我们必须将排名乘以分布中的样本总数(此处 n67);我们得到 k x n = 0.65 x 69 = 44.85。由于结果不是整数,我们将其近似到最接近的整数(在此案例中为 45)。下一步,我们将找到与样本分布中 第 45 个 位置对应的身高值;该值对应于 第 65 个百分位数。在以下案例中,k x n 的结果是一个整数。我们通过直接在样本分布中找到相应的值来进一步处理;那已经是我们的百分位数。

现在,让我们开始使用 Python 中的 Tkinter 构建项目

使用 Tkinter 构建基于排名的百分位数 GUI 计算器

为了更好地理解,使用 Python 中的 Tkinter 库构建基于排名的百分位数 GUI 计算器的方法分为不同的步骤。这些步骤如下:

步骤 1: 我们将从导入 Tkinter 库开始。

步骤 2: 然后我们将定义项目所需的函数。

步骤 3: 然后我们将创建主窗口(容器)。

步骤 4: 然后我们将在主窗口中添加任意数量的小部件。

现在让我们详细了解这些步骤的实现。

导入所需的库

我们将从导入 Tkinter 库开始。此库将允许我们在 Python 中构建图形用户界面。

让我们考虑以下代码片段,它演示了上述语句的实现。

文件:percentileCalci.py

说明

在上面的代码片段中,我们导入了本项目所需的 Tkinter 库中的所有小部件和方法。

定义所需函数

导入所需的库和模块后,我们将定义项目所需的函数。这些函数包括重置输入字段中所有条目的函数和计算给定数据的百分位数的函数。

让我们考虑以下代码片段,说明上述语句的实现。

文件:percentileCalci.py

说明

在上面的代码片段中,我们定义的第一个函数是 reset()。在这个函数中,我们使用了 delete() 方法并删除了所有输入字段中的条目。然后,我们对 total_participants_field 字段使用了 focus_set() 方法,并将光标焦点设置在该字段上。

我们定义的下一个函数是 calculate_percentile()。我们删除了 percentile_field 字段上显示的任何先前结果(如果有)。然后,我们使用 get() 方法从 total_participants_fieldrank_field 等输入字段中检索值,并将它们存储在 studentsrank 变量中。然后,我们计算了给定数据的百分位数,并使用 round() 方法将结果四舍五入到 3 位小数。最后,我们使用 insert() 方法将结果值插入到 percentile_field 字段中。

创建主窗口

现在我们将创建主窗口以向用户显示所有小部件和数据。我们将使用 Tkinter 库的 Tk() 类。我们还将使用 Tk() 类的一些方法来装饰主窗口。

让我们考虑以下代码片段,它演示了上述语句的实现。

文件:percentileCalci.py

说明

在上面的代码片段中,我们创建了一个 Tk() 类的对象。然后,我们使用 title() 方法为主窗口添加了标题。然后,我们使用 geometry() 方法定义了主窗口的大小。我们还借助 resizable() 方法禁用了可调整大小的选项,以获得更好的用户界面。最后,我们使用 configure() 方法并将背景颜色设置为 #fff5ee

向主窗口添加小部件

现在我们已经为应用程序创建了主窗口,是时候添加一些小部件来向用户显示数据了。

我们将从向主窗口添加一些框架开始。这些框架将负责对标签、输入字段和按钮等其他小部件进行分组和组织。我们将使用 Frame() 小部件创建框架。

让我们考虑下面的代码片段,它演示了 Frame() 小部件的实现。

文件:percentileCalci.py

说明

在上面的代码片段中,我们使用了 Frame() 小部件并为主窗口创建了三个框架。这些框架将允许我们组织标题、标签、输入字段和结果部分。然后,我们使用了 pack() 方法来设置这些框架在应用程序中的位置。

现在我们将在第一个框架中添加一个标签,以在应用程序中显示标题。我们将使用 Label() 小部件创建标签,并将 master 小部件设置为 titleFrame。我们还将向其中添加一些文本,并使用其他参数进行一些装饰。

让我们考虑以下演示相同内容的代码片段。

文件:percentileCalci.py

说明

在上面的代码片段中,我们使用了 Label() 小部件来创建一个标签,以显示主窗口的标题。然后,我们将其主小部件设置为 titleFrame 框架,并设置要显示的文本、字体样式和大小、背景和前景颜色。然后,我们使用了 pack() 方法,并将 expand 参数的值设置为 True,将 fill 参数设置为 both,以设置标签在框架中的位置。

现在我们将其他标签插入到主窗口中,以显示总参与者、排名和百分位数等信息。

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

文件:percentileCalculator.py

说明

在上面的代码片段中,我们借助 Label() 小部件定义了三个标签:total_participants_labelrank_labelpercentile_label。我们将 total_participants_labelrank_label 标签的主小部件设置为 fieldFrame 框架,将 percentile_label 标签的主小部件设置为 resultFrame 框架。我们还包括了要显示的文本以及背景和前景颜色。

现在,我们将使用 grid() 方法设置这些标签在主窗口及其各自框架中的位置。此方法允许我们将小部件放置在二维 (2-D) 表中。主小部件被分成不同的行和列;结果表中的每个单元格都可以容纳一个小部件。

现在让我们考虑以下代码片段,它演示了 grid() 方法的使用。

文件:percentileCalculator.py

说明

在上面的代码片段中,我们对之前创建的标签使用了 grid() 方法。我们在每个标签的 grid() 方法中设置了 rowcolumnpadxpadysticky 参数的值。

现在,我们将在 Entry() 小部件的帮助下向主窗口添加一些输入字段。这将允许我们输入数据并显示结果。

以下是代码片段,说明了项目中 Entry() 小部件的实现。

文件:percentileCalculator.py

说明

在上面的代码片段中,我们使用 Entry() 小部件创建了三个输入字段,分别是 total_participants_fieldrank_fieldpercentile_field。我们还将 total_participants_fieldrank_field 字段的主小部件设置为 fieldFrame 框架,并将 percentile_field 字段的主小部件设置为 resultFrame 框架。我们还将这些字段的背景颜色设置为 #fffafa

我们将再次使用 grid() 方法并根据需要将这些字段设置在行和列中。

以下是代码片段,说明了 grid() 方法在定位我们上面创建的字段中的实现。

文件:percentileCalculator.py

说明

在上面的代码片段中,我们对之前创建的字段使用了 grid() 方法,以将它们放置在 2D 表格格式中。我们在 grid() 方法中定义了 rowcolumnpadxpadysticky 参数的值。

现在,我们将在 Button() 小部件的帮助下将按钮添加到主窗口,以执行我们之前创建的函数。

让我们考虑以下代码片段,它演示了 Button() 小部件的实现。

文件:percentileCalci.py

说明

在上面的代码片段中,我们使用了 Button() 小部件分别创建了两个按钮。第一个按钮是 CALCULATE 按钮,它将通过 command 参数调用 calculate_percentile 函数并计算给定数据的百分位数。第二个按钮是 RESET 按钮,它将通过 command 参数调用 reset 函数以清除输入字段中的所有条目并将光标设置到 total_participant_field 字段。

现在我们将使用 grid() 方法并以 2D 表格格式设置按钮的位置,以获得更好的用户界面。

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

文件:percentileCalci.py

说明

在上面的代码片段中,我们对之前创建的按钮使用了 grid() 方法,以将它们放置在 2D 表格格式中。我们在 grid() 方法中定义了 rowcolumnpadxpadysticky 参数的值。

最后,我们将使用 mainloop() 方法来运行主窗口。以下是代码片段,说明了 mainloop() 方法的实现。

文件:percentileCalci.py

说明

在上面的代码片段中,我们使用了 mainloop() 方法来运行主窗口。

因此,我们成功地创建了根据参与者排名计算百分位数的项目。现在我们可以保存 Python 项目文件并执行以下命令以查看结果。

语法

在看到输出之前,让我们先看看 Python 中“基于排名的百分位数 GUI 计算器”项目的完整代码片段。

完整的项目代码

以下是 Python 中“基于排名的百分位数 GUI 计算器”项目的完整代码片段。

文件:percentileCalci.py

输出

Rank-based Percentile GUI Calculator in Python