見出し画像

Python、「時間に合わせて壁紙が変わるアプリ」作れるか試してみた。

突然、こんなのあったら使いたいかもというアイデアが降ってきたので試してみます。


  • 一番最初のコードです。ここから手直ししていきます。

import os
import time
from datetime import datetime

def change_wallpaper():
    current_hour = datetime.now().hour

    if 6 <= current_hour < 12:
        wallpaper_path = "morning_wallpaper.jpg"
    elif 12 <= current_hour < 18:
        wallpaper_path = "afternoon_wallpaper.jpg"
    else:
        wallpaper_path = "evening_wallpaper.jpg"

    # OSによって壁紙の変更方法が異なるため、適切なコマンドを挿入してください。
    # 以下はWindowsの場合の例です。
    os.system('powershell.exe Set-Wallpaper -Path "{}"'.format(wallpaper_path))

if __name__ == "__main__":
    change_wallpaper()

import ctypes
import os
from datetime import datetime

def change_wallpaper(wallpaper_path):
    SPI_SETDESKWALLPAPER = 20
    ctypes.windll.user32.SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, wallpaper_path, 3)

if __name__ == "__main__":
    current_hour = datetime.now().hour

    if 6 <= current_hour < 12:
        wallpaper_path = "C:\\Users\\mmorning_wallpaper.jpg"
    elif 12 <= current_hour < 18:
        wallpaper_path = "C:\\Users\\afternoon_wallpaper.jpg"
    else:
        wallpaper_path = "C:\\Users\\evening_wallpaper.jpg"

    change_wallpaper(wallpaper_path)


パソコン用の壁紙を3タイプ用意

実行してみます。

evening_wallpaper.jpg
現在21:00。
上手くいきました。すごいです。

  • 実行ボタンを押さなくても、自動で変わるように変更したいです。(未確認)とりあえず書いておきます。

import ctypes
import os
from datetime import datetime
import time

def change_wallpaper(wallpaper_path):
    SPI_SETDESKWALLPAPER = 20
    ctypes.windll.user32.SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, wallpaper_path, 3)

if __name__ == "__main__":
    while True:
        current_hour = datetime.now().hour

        if 6 <= current_hour < 12:
            wallpaper_path = "C:\\Users\\morning_wallpaper.jpg"
        elif 12 <= current_hour < 18:
            wallpaper_path = "C:\\Users\\afternoon_wallpaper.jpg"
        else:
            wallpaper_path = "C:\\Users\\evening_wallpaper.jpg"

        change_wallpaper(wallpaper_path)
        
        # 一定の間隔を待つ(例: 1時間ごと)
        time.sleep(3600)  # 単位は秒なので、3600秒は1時間に相当

最後までお読みいただきありがとうございます。
♡頂けますと、励みになります。


この記事が気に入ったらサポートをしてみませんか?