使用 Tkinter 的重量轉換 GUI


圖形使用者介面 (GUI) 是現代軟體應用程式不可或缺的一部分,它提供了互動式且使用者友好的體驗。在本教程中,我們將探討如何使用 Tkinter 建立一個重量轉換 GUI,Tkinter 是一個流行的 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():
   # Create the main window
   window = tk.Tk()
   window.title("Weight Conversion")
   window.geometry("400x200")

   # Add code here

   # Start the GUI event loop
   window.mainloop()

# Call the create_gui function
create_gui()

在 create_gui 函式中,我們建立了 Tk 類的例項,該例項表示 GUI 應用程式的主視窗。我們將視窗的標題設定為“重量轉換”,並將尺寸設定為 400 x 200 畫素。最後,我們使用 mainloop 方法啟動 GUI 事件迴圈。

透過呼叫 create_gui 函式,我們在指令碼執行時啟動 GUI 視窗的建立。

新增 GUI 元件

設定了 GUI 視窗後,讓我們繼續新增必要的 GUI 元件。我們將包括標籤、輸入欄位和用於轉換功能的按鈕。

def create_gui():
   # ...

   # Create the labels
   label_kg = ttk.Label(window, text="Kilograms:")
   label_kg.grid(column=0, row=0, padx=10, pady=10)

   label_lb = ttk.Label(window, text="Pounds:")
   label_lb.grid(column=0, row=1, padx=10, pady=10)

   label_oz = ttk.Label(window, text="Ounces:")
   label_oz.grid(column=0, row=2, padx=10, pady=10)

   # Create the entry fields
   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)

   # Create the conversion button
   button_convert = ttk.Button(window, text="Convert")
   button_convert.grid(column=0, row=3, columnspan=2, padx=10, pady=10)

   # Add code here

在上面的程式碼中,我們建立了三個 ttk.Label 例項來顯示重量單位的名稱。我們使用 grid 方法將它們放置在視窗的第一列中。

接下來,我們建立了三個 ttk.Entry 例項,供使用者輸入重量值。我們使用 grid 方法將它們放置在視窗的第二列中。

最後,我們建立了一個標記為“轉換”的 ttk.Button 例項來觸發重量轉換過程。該按鈕跨越兩列,並放置在第四行。

現在,我們的重量轉換 GUI 的基本結構已到位。在本教程的下一部分中,我們將實現重量轉換功能,並使 GUI 充分發揮作用。

實現轉換功能

現在我們已經設定了 GUI 元件,讓我們在單擊“轉換”按鈕時實現重量轉換功能。

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 函式分配為“轉換”按鈕的命令,使用 command 引數。這確保了在單擊按鈕時執行該函式。

執行應用程式

儲存 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 視窗。然後,我們添加了用於重量轉換的標籤、輸入欄位和按鈕。

我們透過檢索輸入值、執行必要的計算並相應地更新顯示來實現了重量轉換功能。我們還優雅地處理了無效輸入。

更新於: 2023年8月16日

317 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.