使用 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 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告