使用 Python 构建数字时钟

PythonBeginner
立即练习

介绍

在这个项目中,我们将使用 Python 和 Tkinter 库创建一个数字时钟应用程序。这个时钟将显示当前的时间和日期,并允许用户在 12 小时制和 24 小时制之间切换。我们将把代码分成多个步骤,从安装所需的库开始,到运行项目结束。

👀 预览

数字时钟应用程序预览

🎯 任务

在这个项目中,你将学习:

  • 如何安装用 Python 构建数字时钟所需的库。
  • 如何通过创建 Python 脚本并导入所需的库来设置项目。
  • 如何定义一个函数来更新和显示当前的时间和日期。
  • 如何创建一个函数来在 12 小时制和 24 小时制之间切换。
  • 如何创建主应用程序窗口并配置 GUI 样式。
  • 如何在主窗口上创建和放置 GUI 组件。
  • 如何通过调用必要的函数并运行主 GUI 循环来启动时钟。

🏆 成果

完成这个项目后,你将能够:

  • 使用 Python 包管理器 pip 安装库。
  • 使用 Tkinter 库在 Python 中创建图形用户界面。
  • 在 Python 中格式化和显示时间和日期。
  • 使用主题样式自定义 GUI 组件的外观。
  • 创建具有不同文本和功能的按钮。
  • 运行 Python 脚本并执行主 GUI 循环。
这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 中级 级别的实验,完成率为 75%。获得了学习者 60% 的好评率。

安装所需库

在我们开始用 Python 构建数字时钟之前,需要确保已安装必要的库。在这一步中,我们将使用 Python 包管理器 pip 安装所需的库。

sudo apt update
sudo apt-get install python3-tk -y
pip install ttkthemes

这些库的用途如下:

  • tkinter:该库提供了在 Python 中创建图形用户界面(GUI)所需的工具和组件。它是 GUI 开发的标准库。
  • ttkthemes:该库允许我们使用主题样式并自定义 Tkinter 组件的外观,从而为我们的数字时钟赋予视觉上吸引人的设计。

你可以在终端或命令提示符中使用上述命令安装这些库。安装完成后,就可以按照以下步骤继续构建数字时钟了。

现在,创建一个名为 digital_clock.py 的新 Python 文件,并在你喜欢的代码编辑器中打开它。

cd ~/project
touch digital_clock.py
✨ 查看解决方案并练习

设置项目

首先,我们通过创建必要的 Python 脚本并导入所需的库来设置项目。

## 导入必要的库
import tkinter as tk
from tkinter import ttk
from ttkthemes import ThemedStyle
from time import strftime

在这一步中:

  • 我们导入 tkinter 库以创建图形用户界面(GUI)。
  • 我们从 tkinter 中导入特定的组件(ttkThemedStyle)以进行高级样式设置。
  • 我们从 time 模块中导入 strftime 函数来格式化和显示时间。
✨ 查看解决方案并练习

定义时间显示函数

接下来,让我们定义一个函数来更新并显示当前的时间和日期。

def time():
    current_time_format = "%H:%M:%S" if is_24_hour_format else "%I:%M:%S %p"
    current_time = strftime(current_time_format)
    current_date = strftime("%A, %B %d, %Y")
    label_time.config(text=current_time)
    label_date.config(text=current_date)
    label_time.after(1000, time)

在这一步中:

  • 我们创建了一个名为 time() 的函数,用于更新时间和日期标签。
  • current_time_format 变量根据 is_24_hour_format 标志来决定使用 24 小时制还是 12 小时制的时间格式。
  • 我们使用 strftime 函数以所需的格式获取当前的时间和日期。
  • 标签(label_timelabel_date)分别用当前的时间和日期进行更新。
  • label_time.after(1000, time) 这一行安排 time 函数每 1000 毫秒(1 秒)运行一次,以持续更新时间。
✨ 查看解决方案并练习

切换时间格式

让我们创建一个函数,允许用户在 12 小时制和 24 小时制之间切换。

def toggle_time_format():
    global is_24_hour_format
    is_24_hour_format = not is_24_hour_format
    time_format_button.config(text="12 Hour" if is_24_hour_format else "24 Hour")

在这一步中:

  • 我们定义了一个名为 toggle_time_format() 的函数,该函数在 TrueFalse 之间切换 is_24_hour_format 标志。
  • 根据当前格式,时间格式按钮(time_format_button)上的标签会更新为显示“12 小时制”或“24 小时制”。
✨ 查看解决方案并练习

创建主应用程序窗口

现在,让我们创建主应用程序窗口,并设置其标题和尺寸。

root = tk.Tk()
root.title("Digital Clock")
root.geometry("400x250")

在这一步中:

  • 我们使用 tk.Tk() 创建主应用程序窗口。
  • 我们将窗口标题设置为“数字时钟”。
  • 窗口的尺寸设置为 400x250 像素。
✨ 查看解决方案并练习

配置图形用户界面(GUI)样式

配置标签、按钮和框架的样式,以自定义时钟的外观。

style = ThemedStyle(root)
style.set_theme("plastik")
style.configure(
    "TLabel", foreground="#FF5733", background="#333333", font=("calibri", 48, "bold")
)
style.configure(
    "TButton", foreground="#FF5733", background="#333333", font=("calibri", 10, "bold")
)
style.configure("TFrame", background="#333333")

在这一步中:

  • 我们为 GUI 组件创建一个主题样式,以应用一致的外观和感觉。
  • 自定义标签的文本颜色、背景颜色和字体。
  • 自定义按钮的文本颜色、背景颜色和字体。
  • 自定义框架的背景颜色。
✨ 查看解决方案并练习

创建并放置图形用户界面(GUI)组件

现在,让我们在主窗口上创建并放置 GUI 组件。

frame = ttk.Frame(root, style="TFrame", padding=20)
frame.place(relx=0.5, rely=0.5, anchor="center")

label_time = ttk.Label(frame, font=("calibri", 48, "bold"))
label_time.pack()

label_date = ttk.Label(frame, font=("calibri", 16))
label_date.pack()

is_24_hour_format = True
time_format_button = ttk.Button(
    frame, text="12 Hour", command=toggle_time_format, style="TButton"
)
time_format_button.pack(pady=20)

在这一步中:

  • 我们创建了一个具有指定样式和内边距的框架(frame)。
  • 该框架在主窗口中居中显示。
  • 创建了两个标签(label_timelabel_date)用于显示时间和日期。
  • is_24_hour_format 设置初始值为 True
  • 创建了一个按钮(time_format_button),其文本为“12 小时制”,并将 toggle_time_format 函数设置为其命令。
  • 所有组件都被打包并放置在框架中。
✨ 查看解决方案并练习

启动时钟

最后,让我们通过调用 time 函数并运行主 GUI 循环来启动时钟。

time()

root.mainloop()

在这一步中:

  • 我们调用 time() 函数来启动时钟。
  • root.mainloop() 方法启动主 GUI 循环,使应用程序能够实时运行和更新。

现在,让我们运行数字时钟应用程序。

cd ~/project
python digital_clock.py
数字时钟应用程序界面
✨ 查看解决方案并练习

总结

在这个项目中,我们使用 Python 和 Tkinter 创建了一个数字时钟应用程序。我们将这个过程分为几个步骤,包括设置项目、定义时间显示和格式切换的函数、配置 GUI 样式、创建 GUI 组件以及运行时钟应用程序。这个数字时钟会显示当前的时间和日期,并允许用户在 12 小时制和 24 小时制之间切换。