使用 Python 建立一個獲取日落和日出時間的 GUI


什麼是 Python 及其優勢?

Python 是一種高階程式語言,用於各種應用,包括 Web 開發、科學計算、資料分析和人工智慧。它具有簡單優雅的語法,易於閱讀和編寫,以及一個龐大的標準庫,提供了許多有用的工具和函式。Python 的一些優勢包括其可讀性、易用性、靈活性和可移植性。它是一種開源語言,這意味著它可以免費使用,並且可以由任何人修改和分發。Python 還擁有一個龐大而活躍的開發者社群,他們為其開發做出貢獻,併為其他使用者提供支援和資源。

使用 Tkinter 的主要優勢是什麼?

Tkinter 是一個用於建立 GUI 應用程式的 Python 庫。以下是使用 Tkinter 的一些主要優勢:

  • 它包含在 Python 中 - Tkinter 包含在標準 Python 發行版中,這意味著它始終可用,無需安裝任何其他庫。

  • 跨平臺相容性 - Tkinter 在所有主要作業系統(包括 Windows、macOS 和 Linux)上都能正常工作。

  • 易於學習 - Tkinter 具有簡單直觀的 API,易於學習和使用,尤其適合剛開始學習 GUI 程式設計的初學者。

  • 可自定義的小部件 - Tkinter 提供了各種可自定義的小部件,例如按鈕、標籤、文字框、複選框、單選按鈕、列表框等等。這些小部件可以配置以滿足您的特定應用程式需求。

  • 易於建立複雜的佈局 - Tkinter 提供了幾種幾何管理器(pack、grid 和 place),有助於以靈活的方式在螢幕上排列小部件。

  • 對使用者介面的高階控制 - Tkinter 提供了對使用者介面外觀和感覺的高階控制,允許您自定義小部件的外觀、字型、顏色等等。

  • 支援事件驅動程式設計 - Tkinter 基於事件驅動程式設計模型,這意味著它旨在響應使用者事件,例如滑鼠點選、按鈕按下和鍵盤輸入。這使得建立互動式應用程式變得容易。

總的來說,Tkinter 是一款用途廣泛且易於使用的 GUI 工具包,可以幫助您輕鬆建立外觀專業的桌面應用程式。

先決條件

在深入瞭解建立 GUI 的細節之前,您應該對 Python 程式設計、面向物件程式設計 (OOP) 概念以及如何使用 Tkinter 模組有一個基本的瞭解。

推薦設定列表

  • pip install tkinter, astral

  • 預計使用者可以訪問任何獨立的 IDE,例如 VS-Code、PyCharm、Atom 或 Sublime text。

  • 甚至可以使用線上 Python 編譯器,例如 Kaggle.com、Google Cloud Platform 或任何其他編譯器。

  • 更新版本的 Python。在撰寫本文時,我使用了 3.10.9 版本。

  • 瞭解 Jupyter notebook 的使用方法。

  • 虛擬環境的知識和應用將是有益的,但不是必需的。

步驟 1:安裝

首先,我們需要確保已在我們的系統中安裝了所有必要的庫來支援我們的專案。我們將使用 Python 的 Tkinter 庫來建立 GUI,並且還需要 Astral 庫來獲取日落和日出時間。

要安裝 Tkinter 庫 astral,我們可以使用以下命令使用 pip:

pip install python-tk
pip install astral

步驟 2:匯入庫

安裝好庫後,我們可以將它們匯入到我們的 Python 指令碼中。

from tkinter import *
from astral.sun import sun
from astral import LocationInfo
from datetime import datetime

步驟 3:建立 GUI

現在,我們可以開始構建我們的 GUI,方法是定義視窗的大小和標題。在本例中,我們將建立一個帶有標籤和按鈕的簡單視窗。

# Creating the GUI
window = Tk()
window.geometry("500x300")
window.title("Sunset and Sunrise Time")

label = Label(window, text="")
label.pack()

button = Button(window, text="Get Time", command=get_time)
button.pack()

window.mainloop()

步驟 4:新增功能

我們的 GUI 現在已設定好,但它還沒有任何作用。我們將新增一個名為 `get_time` 的函式來獲取當前位置的日落和日出時間。

# Adding Functionality
def get_time():
   city = LocationInfo("New York", "USA")
   s = sun(city.observer, date=datetime.now(), tzinfo=city.timezone)
   sunrise = s['sunrise'].strftime('%H:%M:%S')
   sunset = s['sunset'].strftime('%H:%M:%S')
   label.config(text=f"Sunrise: {sunrise}\nSunset: {sunset}")

在此函式中,我們首先定義我們的位置,在本例中為紐約。然後,我們使用 `astral.sun` 庫中的 `sun` 函式獲取我們位置的日出和日落時間。我們使用 `strftime` 格式化時間,最後使用 `config` 方法更新 GUI 中的標籤。

步驟 5:測試應用程式

現在,我們可以執行應用程式並對其進行測試!在終端中鍵入 `python filename.py` 或從 IDE 中執行它來執行指令碼。

執行指令碼後,GUI 視窗將出現。單擊“獲取時間”按鈕,紐約的日出和日落時間將顯示。

最終程式,程式碼

# Importing Libraries
from tkinter import *
from astral.sun import sun
from astral import LocationInfo
from datetime import datetime

# Adding Functionality
def get_time():
   city = LocationInfo("New York", "USA")
   s = sun(city.observer, date=datetime.now(), tzinfo=city.timezone)
   sunrise = s['sunrise'].strftime('%H:%M:%S')
   sunset = s['sunset'].strftime('%H:%M:%S')
   label.config(text=f"Sunrise: {sunrise}\nSunset: {sunset}")

# Creating the GUI
window = Tk()
window.geometry("500x300")
window.title("Sunset and Sunrise Time")

label = Label(window, text="")
label.pack()

button = Button(window, text="Get Time", command=get_time)
button.pack()

window.mainloop()

輸出

單擊按鈕後,我們將獲得時間。

此部分顯示了所需的輸出。

結論

在本指南中,我們介紹瞭如何建立一個圖形使用者介面 (gui) 來使用 python 獲取日落和日出時間。我們使用了 tkinter 庫來建立 gui,並使用 astral 庫來獲取日落和日出時間。我們編寫的程式碼可以修改並用於需要全球日出和日落時間資訊的各種應用程式。

此外,我們還了解了如何使用 `strftime` 函式格式化變數以使其以可讀的格式顯示。有了這些知識,您可以繼續修改此程式碼以獲取世界上任何位置的日出和日落時間,將其整合到其他系統中,以及更多功能!

更新於:2023 年 4 月 20 日

405 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.