Maison > développement back-end > Tutoriel Python > Comment créer un fond d'écran dynamique avec heure et date à l'aide de Python

Comment créer un fond d'écran dynamique avec heure et date à l'aide de Python

Patricia Arquette
Libérer: 2024-12-12 12:23:25
original
809 Les gens l'ont consulté

Cómo crear un Wallpaper dinámico con la Hora y Fecha usando Python

Si vous avez toujours voulu avoir un fond d'écran qui se met automatiquement à jour avec l'heure et la date actuelles, ce tutoriel est fait pour vous. Nous utiliserons Python et certaines bibliothèques comme PIL (Pillow) pour générer une image, ajouter du texte dynamique avec l'heure et la date, puis définir cette image comme fond d'écran sous Windows.

De quoi avons-nous besoin ?

  • Python installé : si Python n'est pas encore installé, vous pouvez le télécharger depuis python.org.

  • Installer les bibliothèques :

    • Oreiller : Pour travailler avec des images.
    • ctypes : Pour interagir avec le système d'exploitation et changer le fond d'écran sous Windows.

Vous pouvez installer Pillow en exécutant la commande suivante dans votre terminal ou cmd : pip install Pillow

  • Un fichier de police : nous avons besoin d'une police TrueType (.ttf) pour restituer le texte sur l'image. Dans l'exemple de code, nous utilisons la police FiraCode, mais vous pouvez utiliser n'importe quelle police de votre choix.

1. Importations et configuration initiale

Au début du script, nous importons les bibliothèques nécessaires et définissons quelques paramètres initiaux tels que la couleur d'arrière-plan, la couleur du texte, la taille de la police et le chemin du fichier de police :

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
Copier après la connexion
Copier après la connexion
  • Pillow (Image, ImageDraw, ImageFont) est utilisé pour créer l'image et dessiner le texte.
  • ctypes est utilisé pour changer le fond d'écran dans Windows.
  • time et datetime nous permettent de gérer les heures et les dates.
  • background_color et text_color sont les couleurs que nous utiliserons pour l'arrière-plan et le texte.

2. Formatage de la date et de l'heure

Nous définissons une fonction pour garantir que les numéros de date et d'heure sont toujours formatés avec deux chiffres :

def two_digits_format(number):
    return f"0{number}" if number < 10 else number
Copier après la connexion
Copier après la connexion

Par exemple, le jour « 5 » sera formaté comme « 05 », et la même chose se produira avec l'heure, la minute et la seconde.

3. Générez l'image avec la date et l'heure

La fonction add_text_to_image() crée une nouvelle image vierge avec la taille de l'écran (dans ce cas, 1920x1080) et dessine le texte au centre :

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")}"
    }}
}}"""
Copier après la connexion

Dans cette fonction, nous obtenons la date et l'heure actuelles en utilisant datetime.now(), puis formatons le texte au format JSON. Ceci est rendu dans l'image que nous avons générée.

Ensuite, on calcule le centre de l'écran pour y placer le texte :

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)
Copier après la connexion

4. Définir l'image comme fond d'écran

La fonction set_as_wallpaper() enregistre l'image générée en tant que fichier temporaire puis la définit comme fond d'écran :

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
Copier après la connexion
Copier après la connexion

Ici, ctypes.windll.user32.SystemParametersInfoW est une fonction Windows qui permet de changer le fond d'écran.

5. Mise à jour continue du fond d'écran

Dans la boucle while True:, l'image est générée et définie comme fond d'écran une fois par seconde :

def two_digits_format(number):
    return f"0{number}" if number < 10 else number
Copier après la connexion
Copier après la connexion

Cette boucle garantit que le fond d'écran est mis à jour chaque seconde avec l'heure et la date actuelles.

Code complet ici : GitHub

Conclusion

Ce code offre un moyen simple de générer un fond d'écran dynamique qui affiche toujours l'heure et la date actuelles. Vous pouvez personnaliser l'apparence du fond d'écran en ajustant les couleurs, la police et la taille de l'image. De plus, le code est conçu pour être efficace, la mise à jour du fond d'écran se produisant toutes les secondes.

Si vous recherchez une façon amusante d'en apprendre davantage sur la manipulation d'images en Python et sur la manière d'interagir avec le système d'exploitation, ce projet est un excellent point de départ.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal