第5回 Windowsの壁紙スライダーをpysonで作ってみた


◯ソースコード

  1. import ctypes
  2. import os
  3. import glob
  4. import time
  5. import threading
  6. import random
  7. import codecs
  8. import sys
  9. #importとはpyonでモジュールなどを利用するために使用するもの
  10. INTERVAL_SEC = 3
  11. class BgSlider():
  12.     def __init__(self):
  13.         self.index = 0
  14.         self.directory = None
  15.     def setup(self):
  16.         global off
  17.         with codecs.open('path.txt', 'r', 'utf-8') as f:
  18.             #with構文は、close処理を省略することができる。開始時と終了時の定型処理を必ず実行してくれるというメリットがある。
  19.             #asを使うことで、ライブラリ名に好きな名前をつけることができる。
  20.             #path.txtというファイルを好きなディレクトリに書き換える。
  21.             lines = f.readlines()
  22.             self.directory = lines[0].strip()
  23.     def worker(self):
  24.         path = self.directory + r'\*.jpg'
  25.         path.replace('\\\\', '\\')
  26.         files = glob.glob(path)
  27.         # [print(file) for file in files] # ファイルリストをコンソールにまとめて出力するときに使う
  28.         # file = files[random.randint(0, len(files) - 1)] # ランダムにしたい場合はここを使う
  29.         files = sorted(files) # 順番に表示したい場合はここを使う
  30.         file = files[self.index] # 順番に表示したい場合はここを使う
  31.         print(file)
  32.         ctypes.windll.user32.SystemParametersInfoW(20, 0, file, 0)
  33.         if self.index == len(files) - 1:
  34.             #pysonで条件分岐を行う際にif文を使用する
  35.             self.index = 0
  36.         else:
  37.             #elseとは、条件式がFalseの場合行う処理
  38.             self.index += 1
  39.         time.sleep(INTERVAL_SEC)
  40.     def schedule(self, interval, f, wait=True):
  41.         base_time = time.time()
  42.         next_time = 0
  43.         while True:
  44.             #while文は指定した条件式が真の間、処理を繰り返し実行。基本的な書式→while 条件式:条件式が真の時に実行する文
  45.             try:
  46.                 #tryは例外処理の基本で、その他にexceptがある
  47.                 t = threading.Thread(target=f)
  48.                 t.start()
  49.                 if wait:
  50.                     #pythonで条件分岐を行う際にif文を使用する
  51.                     t.join()
  52.                 next_time = ((base_time - time.time()) % interval) or interval
  53.                 time.sleep(next_time)
  54.             except KeyboardInterrupt:
  55.                 #exceptは例外処理の基本で、その他にtryがある
  56.                 exit()
  57. if __name__ == "__main__":
  58.     try:
  59.         #tryは例外処理の基本で、その他にexceptがある
  60.         bg = BgSlider()
  61.         bg.setup()
  62.         bg.schedule(INTERVAL_SEC, bg.worker, False)
  63.     finally:
  64.         #finallyは終了時に常に行う処理のこと
  65.         ctypes.windll.user32.SystemParametersInfoW(20, 0, None, 0)

◯反省点

mac仕様にしようとしてみたが、そもそも理解することが難しく、応用することができなかった。


◯参考にしたサイト

Windowsの壁紙スライダーをpysonで作ってみた