Python中的标准GUI单位转换器

Python中的标准GUI单位转换器

在以下教程中,我们将学习使用Python编程语言中的Tkinter库创建标准单位转换器的方法。

但在开始构建项目之前,让我们简要讨论单位转换及其相关方面。

理解单位转换

单位转换包括多个步骤,涉及乘法或除法运算,或者具体说是一个换算因子。该过程也可能涉及选择适用的有效数字位数和四舍五入。有不同的转换单位用于测量不同的参数。

  1. 测量长度
  2. 测量温度
  3. 测量重量
  4. 测量容量

在数学中,我们通常执行单位转换以便更好地理解测量单位。例如,我们可以用英寸来确定一张桌子的长度,而用码来评估一个花园的长度以便易于理解。同样,用英里来测量一个手指的长度是没有意义的。我们可以使用测量单位来测量不同的数量。

在解决不同的数学问题时,单位转换变得必要。例如,如果矩形的长度以英尺为单位给出,而宽度以米为单位给出,那么为了确定矩形的周长,我们必须将单位转换为使它们统一。因此,我们需要学习单位转换的概念。

单位测量的转换

不同的单位用于测量不同的数量。用于测量的单位如下所示:

  1. 长度
  2. 面积
  3. 体积
  4. 重量
  5. 温度

以下表显示了各个量及其测量单位。

编号 数量 单位
1 长度 米(m),英寸(in),英尺(ft),码(yd),英里
2 面积 平方米,平方英寸,平方英尺,英亩,平方码,平方英里
3 体积 液体盎司(Fl oz),品脱(pt.),夸脱(qt),加仑(gal)
4 重量 盎司,磅(lb.),吨
5 温度 开尔文(K),摄氏度(C),华氏度(F)

在初始学习阶段,有一些非标准的度量单位被用来向儿童介绍单位和测量的概念,而不需要他们阅读任何刻度。阅读任何刻度本身就是一项繁琐的工作,因此引入非标准测量让孩子可以专注于重、轻、长、短等概念,然后再进一步学习使用标准单位进行测量。

非标准测量的一个示例可以是手掌宽度。手掌宽度通常用于以非正式的方式测量物体的长度。然而,由于存在主观性,测量结果可能会有所不同。

Python中的标准GUI单位转换器

让我们现在来考虑以下单元转换表,它描述了不同单位之间的关系。

序号 数量 关系
1 长度 1英里 = 1760码 = 5280英尺 = 63,360英寸
2 体积(容量) 1加仑 = 4夸脱 = 8品脱 = 128液量盎司
3 重量(质量) 1吨 = 2000磅 = 32,000盎司
4 温度 C/5 = (F – 32)/9 = (K – 273)/5

单位转换图表

单位转换图表提供了长度、面积、质量、体积和温度等各种单位的转换因子,作为简便快速计算的参考。我们可以将这些图表视为单位转换的公式,帮助将一个单位给定的任何数量转换为另一个单位。

以下表格表示单位转换的图表:

长度单位转换图表

序号 单位 转换因子
1 1 毫米 0.001 米
2 1 厘米 0.01 米
3 1 分米 0.1 米
4 1 十米 10 米
5 1 百米 100 米
6 1 千米 1000 米
7 1 英寸 2.54 x 10 -2 米
8 1 英尺 0.3048 米 / 12 英寸
9 1 码 0.9144 米 / 3 英尺
10 1 英里 1.609344 千米 / 1760 码 / 5280 英尺 / 63,360 英寸 / 1609.344 米

单位换算面积图表

序号 单位 转换系数
1 1 平方英寸 6.4516 x 10 -4 平方米
2 1 平方英尺 9.2903 x 10 -2 平方米
3 1 英亩 4.0468 x 10 3 平方米
4 1 公顷 1 x 10 4 平方米
5 1 平方英里 2.5888 x 10 6 平方米
6 1 平方巴纳 10 x 10 -28 平方米

体积单位转换图表

序号 单位 转换因子
1 1 毫升 0.001 升
2 1 厘升 0.01 升
3 1 分升 0.1 升
4 1 十升 10 升
5 1 百升 100 升
6 1 千升 1000 升
7 1 立方英寸 1.639 x 10 -2 升
8 1 品脱 473.16 毫升 / 0.57 升
9 1 夸脱 946.353 毫升 / 0.946353 升 / 2 品脱
10 1 加仑 3.785 升 / 4 夸脱 / 8 品脱 / 128 液体盎司
11 1 立方英尺 28.316 升

质量单位转换图表

S. No. 单位 转换系数
1 1 毫克 0.001 克
2 1 厘克 0.01 克
3 1 分克 0.1 克
4 1 十克 10 克
5 1 盎司 28.3495 克
6 1 公斤(公斤) 100 克
7 1 千克 1000 克
8 1 英石 6350.29 克
9 1 磅 453.592 克/ 0.453592 公斤/ 16 盎司
10 1 吨 907.185 公斤/ 2000 磅/ 32,000 盎司

温度单位转换表

序号 单位 转换因子
1 摄氏度 (C) 5 x (F – 32) / 9 = K – 273

现在我们已经学习了单位转换的基础知识,让我们开始使用Python编程语言中的Tkinter库来构建一个单位转换器。

使用Tkinter构建单位转换器

由于项目代码长度较长且一次理解起来比较复杂,我们将完整的项目代码划分为几个部分以便于理解。

为了理解代码,我们将按照下面的步骤进行:

步骤1: 首先我们需要导入所需的库和模块。

步骤2: 接下来,我们将定义执行应用程序所需的函数。

步骤3: 我们将定义所需的字典和列表以存储数据。

步骤4: 接下来,我们将创建应用程序的主窗口。

步骤5: 我们将在主窗口中添加小部件并对它们应用事件触发器。

让我们详细了解这些步骤。

导入所需的库和模块

首先,我们将导入项目所需的必要库和模块。对于这个项目,我们将使用Tkinter库来提供应用程序的图形用户界面。

以下代码片段展示了同样的内容:

File: unitConverter.py

# importing all widgets and modules from the tkinter library
from tkinter import *

解释:

在上面的代码片段中,我们导入了Tkinter库用于项目。

为应用程序定义函数

一旦我们成功导入所需的库,就是时候定义执行应用程序所需的函数了。这些函数包括重置输入数据和结果值的函数,以及允许我们将特定单位转换为所请求单位的函数。

首先,我们将创建一个函数来重置所有输入数据和结果。以下是演示相同的代码片段:

文件:unitConverter.py

# defining the reset function
def reset():
    # using the delete() method to delete entries in the entry fields
    input_field.delete(0, END)
    output_field.delete(0, END)
    # setting the value of the option menu to the
    # first index of the list using the set() method
    input_value.set(SELECTIONS[0])
    output_value.set(SELECTIONS[0])

    # setting the focus to input field using the focus_set() method
    input_field.focus_set()

解释:

在上面的代码片段中,我们定义了一个名为reset的函数。在这个函数中,我们使用了delete()方法来删除输入字段中的内容。然后,我们使用set()方法将选项菜单的值设置为列表的第一个索引。最后,我们使用focus_set()方法将焦点设置到输入字段。

现在让我们定义另一个函数将特定单位转换为所需的单位。以下代码片段演示了相同的功能:

文件:unitConverter.py

# defining the convert function
def convert():
    # getting the string from entry field and converting it into float
    inputVal = float(input_field.get())
    # getting the values from selection menus
    input_unit = input_value.get()
    output_unit = output_value.get()

    # list of the required combinations of the conversion factors
    conversion_factors = [input_unit in length_units and output_unit in length_units,
    input_unit in weight_units and output_unit in weight_units,
    input_unit in temperature_units and output_unit in temperature_units,
    input_unit in area_units and output_unit in area_units,
    input_unit in volume_units and output_unit in volume_units]

    if any(conversion_factors): # If both the units are of same type, perform the conversion
        if input_unit == "celsius" and output_unit == "fahrenheit":
            output_field.delete(0, END)
            output_field.insert(0, (inputVal * 1.8) + 32)
        elif input_unit == "fahrenheit" and output_unit == "celsius":
            output_field.delete(0, END)
            output_field.insert(0, (inputVal - 32) * (5/9))
        else:
            output_field.delete(0, END)
            output_field.insert(0, round(inputVal * unitDict[input_unit] / unitDict[output_unit], 5))

    else:
        # displaying error if units are of different types
        output_field.delete(0, END)
        output_field.insert(0, "ERROR")

解释:

在上面的代码片段中,我们使用 get() 方法和 float() 方法从输入字段中获取字符串值,并将其转换为浮点数值,存储在 inputVal 变量中。然后,我们从选择菜单中获取值,并分别将它们存储在 input_unitoutput_unit 变量中。然后,我们创建了一组所需的转换因子的列表,以便输入和输出字段必须位于相同的单位表中。然后,我们使用嵌套的 if-else 条件语句来检查所请求的转换是否在上述列表中,并根据需要执行操作。

将所需的数据结构添加到应用程序中

现在,我们将向应用程序中添加所需的数据结构,包括字典和一些列表。这些数据结构将存储必要的数据,如单位及其初始值、单位转换表和选择菜单选项。

现在让我们考虑以下示例代码片段来演示这一点。

文件:unitConversion.py

if __name__ == "__main__":
    # dictionary of conversion factors
    unitDict = {
        "millimeter" : 0.001,
        "centimeter" : 0.01,
        "meter" : 1.0,
        "kilometer" : 1000.0,
        "foot" : 0.3048,
        "mile" : 1609.344,
        "yard" : 0.9144,
        "inch" : 0.0254,
        "square meter" : 1.0,
        "square kilometer" : 1000000.0,
        "square centimeter" : 0.0001,
        "square millimeter" : 0.000001,
        "are" : 100.0,
        "hectare" : 10000.0,
        "acre" : 4046.856,
        "square mile" : 2590000.0,
        "square foot" : 0.0929,
        "cubic meter" : 1000.0,
        "cubic centimeter" : 0.001,
        "litre" :  1.0,
        "millilitre" : 0.001,
        "gallon" : 3.785,
        "gram" : 1.0,
        "kilogram" : 1000.0,
        "milligram" : 0.001,
        "quintal" : 100000.0,
        "ton" : 1000000.0,
        "pound" : 453.592,
        "ounce" : 28.3495
    }

    # charts for units conversion
    length_units = [
        "millimeter", "centimeter", "meter", "kilometer", "foot", "mile", "yard", "inch"
        ]
    temperature_units = [
        "celsius", "fahrenheit"
    ]
    area_units = [
        "square meter", "square kilometer", "square centimeter", "square millimeter",
        "are", "hectare", "acre", "square mile", "square foot"
        ]
    volume_units = [
        "cubic meter", "cubic centimeter", "litre", "millilitre", "gallon"   
    ]
    weight_units = [
        "gram", "kilogram", "milligram", "quintal", "ton", "pound", "ounce"
    ]

    # creating the list of options for selection menu
    SELECTIONS = [
        "Select Unit",
        "millimeter",
        "centimeter",
        "meter",
        "kilometer",
        "foot",
        "mile",
        "yard",
        "inch",
        "celsius",
        "fahrenheit"
        "square meter",
        "square kilometer",
        "square centimeter",
        "square millimeter",
        "are",
        "hectare",
        "acre",
        "square mile",
        "square foot"
        "cubic meter",
        "cubic centimeter",
        "litre",
        "millilitre",
        "gallon"   
        "gram",
        "kilogram",
        "milligram",
        "quintal",
        "ton",
        "pound",
        "ounce"
    ]

说明:

在上面的代码片段中,我们创建了一个字典 unitDict ,存储单位及其初始测量值。然后我们创建了一些列表,区分字典中的单位在各自的图表中。我们还有一个包含所有单位的列表,用作选择菜单中显示的选项。

创建应用程序的主窗口

我们现在将创建应用程序的主窗口,在该窗口中将显示所有必要的小部件。我们将使用Tkinter库的 Tk() 类来创建窗口。

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

文件:unitConverter.py

    # creating the main window of the application
    # creating an object of the Tk() class
    guiWindow = Tk()
    # setting the title of the main window
    guiWindow.title("Unit Converter - JAVATPOINT")
    # setting the size and position of the main window
    guiWindow.geometry("500x500+500+250")
    # disabling the resizing option
    guiWindow.resizable(0, 0)
    # setting the background color to #16a085
    guiWindow.configure(bg = "#16a085")

解释:

在上面的代码片段中,我们创建了一个Tk()类的实例。然后我们使用title()和geometry()方法设置了主窗口的标题和大小。我们还通过将resizable()方法的参数值设置为0来禁用了调整大小选项。最后,我们使用configure()方法将背景颜色设置为#16a085。

将部件添加到主窗口

一旦我们创建了应用程序的主窗口,就可以添加一些部件。我们将从在窗口中添加一些框架来为其他部件提供结构。

我们可以使用Tkinter库的Frame()部件来添加框架。以下代码片段演示了相同的操作。

文件:unitConverter.py

    # adding frames to the main window
    header_frame = Frame(guiWindow, bg = "#16a085")
    body_frame = Frame(guiWindow, bg = "#16a085")

    # setting the positions of the frames
    header_frame.pack(expand = True, fill = "both")
    body_frame.pack(expand = True, fill = "both")

解释:

在上面的代码片段中,我们使用了 Frame() 小部件来创建主窗口的框架。我们将 master 参数设置为 guiWindow ,背景颜色设置为 #16a085

现在,我们将使用 Label() 小部件添加一个标签来显示主窗口的标题。

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

文件:unitConverter.py

    # adding the label to the header frame 
    header_label = Label(
        header_frame,
        text = "STANDARD UNIT CONVERTER",
        font = ("arial black", 16),
        bg = "#16a085",
        fg = "#e8f6f3"
    )

    # setting the position of the label
    header_label.pack(expand = True, fill = "both")

说明:

在上面的代码片段中,我们使用了 Label() 小部件来创建一个显示标题的标签。我们将此小部件的 master 参数设置为 header_frame 框架,并设置文本为 – 标准单位转换器 。我们还将字体样式设置为 Arial black ,字体大小设置为 16 。我们还将背景颜色设置为 #16a085 ,前景颜色设置为 #e8f6f3 。最后,我们使用 pack() 方法,并将 expand 参数的值设置为 True ,将 fill 参数的值设置为 both ,以设置标签的位置。

我们现在将创建一些 StringVar() 类的对象,以存储来自输入和输出选择菜单中的数据。我们还将把这些对象的初始值设置为我们之前创建的 SELECTIONS 列表的索引值 0

文件:unitConverter.py

    # creating the objects of the StringVar() class
    input_value = StringVar()
    output_value = StringVar()
    # using the set() method to set the primary
    # value of the objects to index value 0
    # of the SELECTIONS list
    input_value.set(SELECTIONS[0])
    output_value.set(SELECTIONS[0])

解释:

在上面的代码片段中,我们创建了两个 StringVar() 类的对象。然后,我们使用 set() 方法将对象的主要值设置为 SELECTIONS 列表的索引值 0

现在,我们将使用 Label() 小部件创建一些标签,以显示主窗口的信息。

现在,让我们考虑下面显示相同内容的代码片段。

文件:unitConverter.py

    # creating the labels for the body of the main window
    input_label = Label(
        body_frame,
        text = "From:",
        bg = "#16a085",
        fg = "#d0ece7"
    )
    output_label = Label(
        body_frame,
        text = "To:",
        bg = "#16a085",
        fg = "#d0ece7"
    )

    # using the grid() method to set the position of the above labels 
    input_label.grid(row = 1, column = 1, padx = 50, pady = 20, sticky = W)
    output_label.grid(row = 2, column = 1, padx = 50, pady = 20, sticky = W)

解释:

在上面的代码片段中,我们使用了 Label() 小部件并创建了两个标签,将这些小部件的 master 参数设置为 body_frame 框架。我们为这些标签添加了文本,并将背景颜色设置为 #16a085 ,前景颜色设置为 #d0ece7 。然后,我们使用了 grid() 方法来设置上述标签的位置。

接下来,我们将使用 Entry() 小部件在主窗口中添加一些输入字段,用于输入和显示数据。

以下是展示 Entry() 小部件用法的代码片段。

文件:unitConverter.py

    # creating the entry fields for the body of the main window
    # input field to enter data
    input_field = Entry(
        body_frame,
        bg = "#e8f8f5"
    )
    # output field to display result
    output_field = Entry(
        body_frame,
        bg = "#e8f8f5"
    )

    # using the grid() method to set the position of the above entry fields
    input_field.grid(row = 1, column = 2)
    output_field.grid(row = 2, column = 2)

说明:

在上面的代码片段中,我们使用了 Entry() 小部件,通过将 master 参数设置为 body_frame 框架,并将背景颜色设置为 #e8f8f5 ,将输入字段添加到主窗口的主体部分。然后,我们使用了 grid() 方法来设置上述输入字段的位置。

现在,我们将使用 OptionMenu() 小部件来添加选项菜单。

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

文件:unitConverter.py

    # adding the options menus to the main window
    input_menu = OptionMenu(
        body_frame,
        input_value,
        *SELECTIONS
    )
    output_menu = OptionMenu(
        body_frame,
        output_value,
        *SELECTIONS
    )

    # using the grid() method to set the position of the above option menus 
    input_menu.grid(row = 1, column = 3, padx = 20)
    output_menu.grid(row = 2, column = 3, padx = 20)

说明:

在上面的代码片段中,我们使用 OptionMenu() 小部件将选项菜单添加到显示列表中,供用户选择。我们将这些小部件的 master 参数设置为 body_frame 框架,用于将选择的数据存储在 input_valueoutput_value 变量中。然后,我们将数据列表设置为 SELECTIONS 列表,用于这两个小部件。最后,我们使用 grid() 方法将这些选项菜单的位置设置在主窗口上。

现在,我们将使用 Button() 小部件添加一些按钮。这些按钮将调用 convert()reset() 函数。

让我们考虑下面的代码片段,演示了相同的功能。

文件:unitConverter.py

    # creating the buttons for the main window
    # CONVERT button
    convert_button = Button(
        body_frame,
        text = "CONVERT",
        bg = "#0b5345",
        fg = "#ffffff",
        command = convert
    )
    # RESET button
    reset_button = Button(
        body_frame,
        text = "RESET",
        bg = "#f7dc6f",
        fg = "#000000",
        command = reset
    )

    # using the grid() method to set the position of the above buttons
    convert_button.grid(row = 3, column = 2)
    reset_button.grid(row = 3, column = 3)

说明:

在上面的代码片段中,我们使用了 Button() 小部件创建了两个按钮。第一个按钮是 CONVERT 按钮,将调用 convert() 函数,允许用户将给定的单位转换为所需的单位。第二个按钮是 RESET 按钮,将调用 reset() 函数来重置主窗口上的所有输入。最后,我们使用 grid() 方法设置了这些按钮的位置。

现在,我们将在 Tk() 类的对象上使用 mainloop() 方法来运行应用程序。

以下是演示相同功能的代码片段。

文件:unitConverter.py

    # running the application
    guiWindow.mainloop()

解释:

在上面的代码片段中,我们使用了 mainloop() 方法以 guiWindow 为参数,这是 Tk() 类的对象,用于运行应用程序。

因此,项目代码现在已完成。我们可以保存文件并在命令行或终端中运行以下命令来查看输出。

语法:

$ python unitConverter.py

在我们查看输出之前,让我们考虑一下Python中“GUI Unit Converter”项目的完整代码。

完整的项目代码

以下是Python编程语言中“GUI Unit Converter”项目的代码片段。

文件: unitConverter.py

# importing all widgets and modules from the tkinter library
from tkinter import *

# defining the reset function
def reset():
    # using the delete() method to delete entries in entry field
    input_field.delete(0, END)
    output_field.delete(0, END)
    # setting the value of the option menu to the
    # first index of the list using the set() method
    input_value.set(SELECTIONS[0])
    output_value.set(SELECTIONS[0])

    # setting the focus to input field using the focus_set() method
    input_field.focus_set()

# defining the convert function
def convert():
    # getting the string from entry field and converting it into float
    inputVal = float(input_field.get())
    # getting the values from selection menus
    input_unit = input_value.get()
    output_unit = output_value.get()

    # list of the required combination of the conversion factors
    conversion_factors = [input_unit in length_units and output_unit in length_units,
    input_unit in weight_units and output_unit in weight_units,
    input_unit in temperature_units and output_unit in temperature_units,
    input_unit in area_units and output_unit in area_units,
    input_unit in volume_units and output_unit in volume_units]

    if any(conversion_factors): # If both the units are of same type, perform the conversion
        if input_unit == "celsius" and output_unit == "fahrenheit":
            output_field.delete(0, END)
            output_field.insert(0, (inputVal * 1.8) + 32)
        elif input_unit == "fahrenheit" and output_unit == "celsius":
            output_field.delete(0, END)
            output_field.insert(0, (inputVal - 32) * (5/9))
        else:
            output_field.delete(0, END)
            output_field.insert(0, round(inputVal * unitDict[input_unit] / unitDict[output_unit], 5))

    else:
        # displaying error if units are of different types
        output_field.delete(0, END)
        output_field.insert(0, "ERROR")

if __name__ == "__main__":
    # dictionary of conversion factors
    unitDict = {
        "millimeter" : 0.001,
        "centimeter" : 0.01,
        "meter" : 1.0,
        "kilometer" : 1000.0,
        "foot" : 0.3048,
        "mile" : 1609.344,
        "yard" : 0.9144,
        "inch" : 0.0254,
        "square meter" : 1.0,
        "square kilometer" : 1000000.0,
        "square centimeter" : 0.0001,
        "square millimeter" : 0.000001,
        "are" : 100.0,
        "hectare" : 10000.0,
        "acre" : 4046.856,
        "square mile" : 2590000.0,
        "square foot" : 0.0929,
        "cubic meter" : 1000.0,
        "cubic centimeter" : 0.001,
        "litre" :  1.0,
        "millilitre" : 0.001,
        "gallon" : 3.785,
        "gram" : 1.0,
        "kilogram" : 1000.0,
        "milligram" : 0.001,
        "quintal" : 100000.0,
        "ton" : 1000000.0,
        "pound" : 453.592,
        "ounce" : 28.3495
    }

    # charts for units conversion
    length_units = [
        "millimeter", "centimeter", "meter", "kilometer", "foot", "mile", "yard", "inch"
        ]
    temperature_units = [
        "celsius", "fahrenheit"
    ]
    area_units = [
        "square meter", "square kilometer", "square centimeter", "square millimeter",
        "are", "hectare", "acre", "square mile", "square foot"
        ]
    volume_units = [
        "cubic meter", "cubic centimeter", "litre", "millilitre", "gallon"   
    ]
    weight_units = [
        "gram", "kilogram", "milligram", "quintal", "ton", "pound", "ounce"
    ]

    # creating the list of options for selection menu
    SELECTIONS = [
        "Select Unit",
        "millimeter",
        "centimeter",
        "meter",
        "kilometer",
        "foot",
        "mile",
        "yard",
        "inch",
        "celsius",
        "fahrenheit"
        "square meter",
        "square kilometer",
        "square centimeter",
        "square millimeter",
        "are",
        "hectare",
        "acre",
        "square mile",
        "square foot"
        "cubic meter",
        "cubic centimeter",
        "litre",
        "millilitre",
        "gallon"   
        "gram",
        "kilogram",
        "milligram",
        "quintal",
        "ton",
        "pound",
        "ounce"
    ]

    # creating the main window of the application
    # creating an object of the Tk() class
    guiWindow = Tk()
    # setting the title of the main window
    guiWindow.title("Unit Converter - JAVATPOINT")
    # setting the size and position of the main window
    guiWindow.geometry("500x500+500+250")
    # disabling the resizing option
    guiWindow.resizable(0, 0)
    # setting the background color to #16a085
    guiWindow.configure(bg = "#16a085")

    # adding frames to the main window
    header_frame = Frame(guiWindow, bg = "#16a085")
    body_frame = Frame(guiWindow, bg = "#16a085")

    # setting the positions of the frames
    header_frame.pack(expand = True, fill = "both")
    body_frame.pack(expand = True, fill = "both")

    # adding the label to the header frame 
    header_label = Label(
        header_frame,
        text = "STANDARD UNIT CONVERTER",
        font = ("arial black", 16),
        bg = "#16a085",
        fg = "#e8f6f3"
    )

    # setting the position of the label
    header_label.pack(expand = True, fill = "both")

    # creating the objects of the StringVar() class
    input_value = StringVar()
    output_value = StringVar()
    # using the set() method to set the primary
    # value of the objects to index value 0
    # of the SELECTIONS list
    input_value.set(SELECTIONS[0])
    output_value.set(SELECTIONS[0])

    # creating the labels for the body of the main window
    input_label = Label(
        body_frame,
        text = "From:",
        bg = "#16a085",
        fg = "#d0ece7"
    )
    output_label = Label(
        body_frame,
        text = "To:",
        bg = "#16a085",
        fg = "#d0ece7"
    )

    # using the grid() method to set the position of the above labels 
    input_label.grid(row = 1, column = 1, padx = 50, pady = 20, sticky = W)
    output_label.grid(row = 2, column = 1, padx = 50, pady = 20, sticky = W)

    # creating the entry fields for the body of the main window
    # input field to enter data
    input_field = Entry(
        body_frame,
        bg = "#e8f8f5"
    )
    # output field to display result
    output_field = Entry(
        body_frame,
        bg = "#e8f8f5"
    )

    # using the grid() method to set the position of the above entry fields 
    input_field.grid(row = 1, column = 2)
    output_field.grid(row = 2, column = 2)

    # adding the option menus to the main window
    input_menu = OptionMenu(
        body_frame,
        input_value,
        *SELECTIONS
    )
    output_menu = OptionMenu(
        body_frame,
        output_value,
        *SELECTIONS
    )

    # using the grid() method to set the position of the above option menus 
    input_menu.grid(row = 1, column = 3, padx = 20)
    output_menu.grid(row = 2, column = 3, padx = 20)

    # creating the buttons for the main window
    # CONVERT button
    convert_button = Button(
        body_frame,
        text = "CONVERT",
        bg = "#0b5345",
        fg = "#ffffff",
        command = convert
    )
    # RESET button
    reset_button = Button(
        body_frame,
        text = "RESET",
        bg = "#f7dc6f",
        fg = "#000000",
        command = reset
    )

    # using the grid() method to set the position of the above buttons
    convert_button.grid(row = 3, column = 2)
    reset_button.grid(row = 3, column = 3)

    # running the application
    guiWindow.mainloop()

输出:

Python中的标准GUI单位转换器

结论

这个教程教会了我们如何使用Python中的Tkinter库基于图形用户界面创建一个单位转换器应用程序。我们还学习了不同的Tkinter库小部件和方法,以及它们在Python脚本中的实现。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程