如果您曾经想要拥有一张根据当前时间和日期自动更新的壁纸,本教程适合您。我们将使用 Python 和一些库(如 PIL (Pillow))生成图像,添加带有时间和日期的动态文本,然后将此图像设置为 Windows 上的壁纸。
已安装 Python:如果您尚未安装 Python,可以从 python.org 下载它。
安装库:
您可以通过在终端或 cmd 中运行以下命令来安装 Pillow:pip installpillow
在脚本的开头,我们导入必要的库并定义一些初始参数,例如背景颜色、文本颜色、字体大小和字体文件路径:
from PIL import Image, ImageDraw, ImageFont import ctypes, os, time, io from datetime import datetime background_color = (0, 0, 0) # Color de fondo (negro) text_color = (22, 230, 69) # Color del texto (verde) font_size = 30 font_path = r"c:/Users/david/Desktop/FiraCodeRegular.ttf" # Ruta de la fuente font = ImageFont.truetype(font_path, font_size) screen_width = 1920 screen_height = 1080
我们定义一个函数来确保日期和时间数字始终采用两位数字格式:
def two_digits_format(number): return f"0{number}" if number < 10 else number
例如,“5”天将被格式化为“05”,小时、分钟和秒也会发生同样的情况。
add_text_to_image() 函数创建一个新的空白图像,其大小与屏幕大小(在本例中为 1920x1080)并在中心绘制文本:
def agregar_texto_a_imagen(): now = datetime.now() texto = f"""{{ "date": {{ "day": {two_digits_format(now.day)}, "month": {two_digits_format(now.month)}, "year": {now.year} }}, "time": {{ "hour": {two_digits_format(now.hour)}, "minute": {two_digits_format(now.minute)}, "second": {two_digits_format(now.second)}, "meridiem": "{now.strftime("%p")}" }} }}"""
在此函数中,我们使用 datetime.now() 获取当前日期和时间,然后将文本格式化为 JSON 格式。这在我们生成的图像中呈现。
然后,我们计算屏幕的中心以将文本放置在那里:
bbox = draw.textbbox((0, 0), texto, font=font) ancho_texto = bbox[2] - bbox[0] altura_texto = bbox[3] - bbox[1] posicion_x = (ancho_imagen - ancho_texto) // 2 posicion_y = (altura_imagen - altura_texto) // 2 posicion = (posicion_x, posicion_y)
set_as_wallpaper()函数将生成的图像保存为临时文件,然后将其设置为壁纸:
from PIL import Image, ImageDraw, ImageFont import ctypes, os, time, io from datetime import datetime background_color = (0, 0, 0) # Color de fondo (negro) text_color = (22, 230, 69) # Color del texto (verde) font_size = 30 font_path = r"c:/Users/david/Desktop/FiraCodeRegular.ttf" # Ruta de la fuente font = ImageFont.truetype(font_path, font_size) screen_width = 1920 screen_height = 1080
这里,ctypes.windll.user32.SystemParametersInfoW 是一个 Windows 函数,允许您更改壁纸。
在 while True: 循环中,每秒生成一次图像并设置为壁纸:
def two_digits_format(number): return f"0{number}" if number < 10 else number
此循环确保壁纸每秒更新一次当前时间和日期。
完整代码在这里:GitHub
此代码提供了一种生成始终显示当前时间和日期的动态壁纸的简单方法。您可以通过调整颜色、字体和图像大小来自定义壁纸的外观。此外,代码设计得很高效,壁纸每秒都会更新。
如果您正在寻找一种有趣的方式来了解 Python 中的图像处理以及如何与操作系统交互,那么这个项目是一个很好的起点。
以上是如何使用 Python 创建带有时间和日期的动态壁纸的详细内容。更多信息请关注PHP中文网其他相关文章!