使用 Tkinter 的重量转换 GUI

pythontkinterserver side programmingprogramming

图形用户界面 (GUI) 是现代软件应用程序不可或缺的一部分,可提供交互式和用户友好的体验。在本教程中,我们将探索如何使用 Tkinter(一种用于创建 GUI 应用程序的流行 Python 库)创建重量转换 GUI。

我们的重量转换 GUI 将允许用户轻松地在不同的单位(如千克 (kg)、磅 (lb) 和盎司 (oz))之间转换重量。

让我们从设置项目开始。打开您最喜欢的文本编辑器或集成开发环境 (IDE) 并创建一个新的 Python 脚本文件。我们将其命名为 weight_converter.py。

导入所需模块

在我们的 weight_converter.py 文件中,我们将从导入必要的模块开始。 Tkinter 提供了构建 GUI 的核心功能,因此我们需要导入它 

import tkinter as tk
from tkinter import ttk

在这里,我们将 tkinter 模块作为 tk 导入,并将提供主题小部件的 ttk 模块也从 tkinter 导入。

创建 GUI 窗口

接下来,我们将定义一个名为 create_gui 的函数来创建我们的 GUI 窗口。此函数将负责初始化窗口、设置其属性并启动主事件循环 −

def create_gui():
    # 创建主窗口
    window = tk.Tk()
    window.title("Weight Conversion")
    window.geometry("400x200")
    
    # 在此处添加代码
    
    # 启动 GUI 事件循环
    window.mainloop()

# 调用 create_gui 函数
create_gui()

在 create_gui 函数中,我们创建 Tk 类的一个实例,它代表我们的 GUI 应用程序的主窗口。我们将窗口的标题设置为"Weight Conversion",并将其尺寸设置为 400 x 200 像素。最后,我们使用 mainloop 方法启动 GUI 事件循环。

通过调用 create_gui 函数,我们在执行脚本时启动 GUI 窗口的创建。

添加 GUI 组件

设置 GUI 窗口后,让我们继续添加必要的 GUI 组件。我们将包括标签、输入字段和转换功能的按钮。

def create_gui():
    # ...
    
    # 创建标签
    label_kg = ttk.Label(window, text="千克:")
    label_kg.grid(column=0, row=0, padx=10, pady=10)
    
    label_lb = ttk.Label(window, text="磅:")
    label_lb.grid(column=0, row=1, padx=10, pady=10)
    
    label_oz = ttk.Label(window, text="盎司:")
    label_oz.grid(column=0, row=2, padx=10, pady=10)
    
    # 创建输入字段
    entry_kg = ttk.Entry(window)
    entry_kg.grid(column=1, row=0, padx=10, pady=10)
    
    entry_lb = ttk.Entry(window)
    entry_lb.grid(column=1, row=1, padx=10, pady=10)
    
    entry_oz = ttk.Entry(window)
    entry_oz.grid(column=1, row=2, padx=10, pady=10)
    
    # 创建转换按钮
    button_convert = ttk.Button(window, text="Convert")
    button_convert.grid(column=0, row=3, columnspan=2, padx=10, pady=10)
    
    # 在此处添加代码

在上面的代码中,我们创建了三个 ttk.Label 实例来显示体重单位的名称。我们使用 grid 方法将它们定位在窗口的第一列中。

接下来,我们创建三个 ttk.Entry 实例,供用户输入体重值。我们使用网格方法将它们定位在窗口的第二列中。

最后,我们创建一个标记为"Convert"的 ttk.Button 实例来触发重量转换过程。该按钮横跨两列,位于第四行。

我们的重量转换 GUI 的基本结构现已到位。在本教程的下一部分中,我们将实现重量转换功能并使 GUI 完全发挥作用。

实现转换功能

现在我们已经设置了 GUI 组件,让我们在单击"Convert"按钮时实现重量转换功能。

def convert_weight():
   try:
      kg = float(entry_kg.get())
      lb = kg * 2.20462
      oz = kg * 35.274

      entry_lb.delete(0, tk.END)
      entry_lb.insert(0, round(lb, 2))

      entry_oz.delete(0, tk.END)
      entry_oz.insert(0, round(oz, 2))
   except ValueError:
      # Handle invalid input
      pass

def create_gui():
   # ...

   button_convert = ttk.Button(window, text="Convert", command=convert_weight)
   # ...

   # ...

在上面的代码中,我们定义了一个名为 convert_weight 的函数,它将执行转换计算。我们从 entry_kg 输入字段中检索以千克为单位的重量,使用转换系数将其转换为磅和盎司,并更新相应的输入字段。

我们在 entry_kg 对象上使用 get 方法来检索用户以字符串形式输入的值。我们使用 float 函数将其转换为浮点数。

接下来,我们通过将以千克为单位的重量乘以相应的转换系数来计算以磅和盎司为单位的等效重量。

要显示转换后的重量,我们首先使用带有 tk.END 参数的 delete 方法清除 entry_lb 和 entry_oz 字段的内容。然后,我们使用 insert 方法将 lb 和 oz 的四舍五入值插入到它们各自的输入字段中。

我们将转换代码包装在 try-except 块中,以处理无效输入的情况。如果用户输入非数字值,则会引发 ValueError。在这种情况下,我们只是传递,不执行任何转换。

最后,我们使用命令参数将 convert_weight 函数指定为"转换"按钮的命令。这可确保单击按钮时执行该函数。

运行应用程序

保存 weight_converter.py 文件并打开终端或命令提示符。导航到文件所在的目录并执行以下命令 

python weight_converter.py

GUI 窗口应出现在您的屏幕上。输入以公斤为单位的重量,点击"转换"按钮,将显示以磅和盎司为单位的等效重量。

以下是一些示例输出示例,以便更好地理解。当您运行 weight_converter.py 脚本并与 GUI 窗口交互时,以下是您可以期待的示例:

  • 输入 5 公斤

  • 输出<

    • 磅:11.02 磅

    • 盎司:176.37 盎司

  • 输入 2.5公斤

  • 输出 <

    • 磅:5.51 磅

    • 盎司:88.18 盎司

这些输出示例演示了如何使用重量转换 GUI 将公斤重量转换为磅和盎司。

结论

我们使用 Python 中的 Tkinter 构建了一个重量转换 GUI。我们首先设置项目,导入必要的模块,然后创建 GUI 窗口。然后,我们添加了标签、输入字段和重量转换按钮。

我们通过检索输入值、执行必要的计算并相应地更新显示来实现重量转换功能。我们还优雅地处理了无效输入。


相关文章