使用 PyQt 的年齡計算器


在當今的數字時代,建立具有圖形使用者介面 (GUI) 的使用者友好型桌面應用程式變得越來越重要。Python 是一種用途廣泛且流行的程式語言,它提供了許多框架和庫來開發功能強大的應用程式。PyQt 是 Qt 框架的 Python 繫結,是一個這樣的庫,它使開發人員能夠建立強大且視覺上吸引人的桌面應用程式。

年齡計算器是常用的工具,允許使用者根據其出生日期確定其當前年齡。透過利用 PyQt 的功能,我們可以建立一個直觀且高效的年齡計算器應用程式,提供無縫的使用者體驗。

專案設定

在開始使用 PyQt 構建我們的年齡計算器應用程式之前,我們需要確保已安裝必要的先決條件。首先,確保您的系統上已安裝 Python 3.x。您可以從 Python 官方網站 (python.org) 下載最新版本的 Python。

安裝 Python 後,我們需要安裝 PyQt5 庫。開啟您的命令列介面並執行以下命令:

pip install PyQt5

這將安裝 PyQt5 庫及其依賴項,使我們能夠建立 GUI 應用程式。

在先決條件就緒後,我們就可以繼續執行後續步驟並開始使用 PyQt 構建我們的年齡計算器。在接下來的部分中,我們將建立應用程式視窗,實現年齡計算邏輯,並執行應用程式以測試其功能。

建立應用程式視窗

構建年齡計算器的第一步是建立應用程式視窗。在 PyQt 中,視窗由一個繼承自 QWidget 類的類表示。此類為在 PyQt 應用程式中建立和管理視窗提供了基礎。

讓我們從為我們的專案建立一個新的 Python 檔案開始,我們將將其命名為 age_calculator.py。開啟您首選的文字編輯器或整合開發環境 (IDE) 並建立一個同名的新檔案。

首先,我們需要從 PyQt5 庫匯入必要的模組和類。在您的 age_calculator.py 檔案的開頭新增以下程式碼:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QDateEdit, QPushButton, QMessageBox
from PyQt5.QtCore import Qt, QDate

在此程式碼段中,我們匯入 sys 用於系統相關操作,QApplication 和 QWidget 用於建立應用程式視窗,QLabel 用於顯示文字,QVBoxLayout 用於垂直組織布局,QDateEdit 用於選擇出生日期,QPushButton 用於建立按鈕,以及 QMessageBox 用於顯示訊息。

接下來,我們將定義 AgeCalculator 類,它將充當我們的應用程式視窗。在匯入語句下方新增以下程式碼:

class AgeCalculator(QWidget):
   def __init__(self):
      super().__init__()
      self.setWindowTitle("Age Calculator")
      self.setup_ui()

   def setup_ui(self):
      layout = QVBoxLayout()
      self.setLayout(layout)

      birthdate_label = QLabel("Enter your birthdate:")
      layout.addWidget(birthdate_label)

      birthdate_edit = QDateEdit(calendarPopup=True)
      birthdate_edit.setMaximumDate(QDate.currentDate())
      layout.addWidget(birthdate_edit)

      calculate_button = QPushButton("Calculate Age")
      calculate_button.clicked.connect(self.calculate_age)
      layout.addWidget(calculate_button)

在此程式碼段中,我們將 AgeCalculator 類定義為 QWidget 的子類。構造方法 __init__() 在建立類的例項時呼叫。在建構函式內部,我們使用 self.setWindowTitle() 設定視窗標題。我們還呼叫 setup_ui() 方法,該方法將負責設定應用程式的使用者介面。

在 setup_ui() 方法中,我們使用 QVBoxLayout 建立一個垂直佈局,並將其設定為視窗的佈局,使用 self.setLayout()。然後,我們建立一個 QLabel 視窗小部件以顯示“輸入您的出生日期”文字,使用 layout.addWidget() 將其新增到佈局中,並建立一個 QDateEdit 視窗小部件以允許使用者選擇其出生日期。我們使用 calendarPopup=True 啟用日曆彈出視窗,並使用 birthdate_edit.setMaximumDate(QDate.currentDate()) 將最大可選日期設定為當前日期。最後,我們使用 QPushButton 建立一個“計算年齡”按鈕,使用 calculate_button.clicked.connect() 將其 clicked 訊號連線到 calculate_age() 方法,並將其新增到佈局中。

計算年齡

現在我們已經建立了應用程式視窗,讓我們實現根據所選出生日期計算年齡的邏輯。當用戶單擊“計算年齡”按鈕時,我們將檢索出生日期,計算年齡並顯示結果。

在 AgeCalculator 類內部,新增以下程式碼:

def calculate_age(self):
   birthdate = self.sender().parent().findChild(QDateEdit).date()
   current_date = QDate.currentDate()

   age_years = current_date.year() - birthdate.year()
   age_months = current_date.month() - birthdate.month()
   age_days = current_date.day() - birthdate.day()

   if age_days < 0:
      age_months -= 1
      age_days += birthdate.daysInMonth()

   if age_months < 0:
      age_years -= 1
      age_months += 12

   age_text = f"You are {age_years} years, {age_months} months, and {age_days} days old."
   QMessageBox.information(self, "Age Calculation", age_text)

在此程式碼段中,我們定義了 calculate_age() 方法,該方法將在單擊“計算年齡”按鈕時呼叫。在方法內部,我們使用 sender() 方法從 QDateEdit 視窗小部件檢索出生日期。sender() 方法返回發出訊號的物件,在本例中為“計算年齡”按鈕。我們使用 parent() 訪問其父視窗小部件,並使用 findChild(QDateEdit) 查詢 QDateEdit 視窗小部件。然後,我們使用 .date() 檢索選定的日期。

我們還使用 QDate.currentDate() 獲取當前日期。有了出生日期和當前日期,我們使用簡單的算術運算來計算年、月和日的差值。如果天數為負,我們將調整月數並添加出生月份的天數。類似地,如果月數為負,我們將減去一年並新增 12 個月。

執行應用程式

要執行年齡計算器應用程式,我們需要建立 QApplication 類的例項,例項化 AgeCalculator 類,顯示視窗並啟動應用程式事件迴圈。

在您的 age_calculator.py 檔案的末尾,新增以下程式碼:

if __name__ == "__main__":
   app = QApplication(sys.argv)
   calculator = AgeCalculator()
   calculator.show()
   sys.exit(app.exec())

在此程式碼段中,我們使用 __name__ == "__main__" 檢查當前模組是否為主模組。這使我們能夠確保僅在直接執行指令碼時才執行以下程式碼,而不是在將其作為模組匯入時。

在條件塊內,我們建立一個名為 app 的 QApplication 例項。然後,我們例項化 AgeCalculator 類並將其分配給 calculator 變數。我們對 calculator 物件呼叫 show() 以顯示視窗。最後,我們透過呼叫 app.exec() 啟動應用程式事件迴圈。sys.exit() 呼叫確保在應用程式關閉時乾淨退出。

儲存您的檔案並使用命令 python age_calculator.py 執行它。您應該會看到年齡計算器窗口出現。

結論

在這裡,我們探討了使用 PyQt 建立年齡計算器應用程式的過程。我們首先設定專案並匯入必要的庫。然後,我們建立了應用程式視窗,實現了年齡計算邏輯,並運行了應用程式以測試其功能。

透過利用 PyQt 的強大功能,我們構建了一個使用者友好的年齡計算器,為使用者提供了一種直觀且高效的方式來根據其出生日期確定其當前年齡。本教程為您使用 PyQt 進行 GUI 應用程式開發的旅程奠定了堅實的基礎,您可以將此處學到的概念應用於構建各種其他桌面應用程式。

更新於:2023年8月16日

159 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告