第5回

windowsの壁紙を自動で変更するプログラムでしたが、完成させることはできませんでした。

今回は完成させることはできませんでしたが、発想力はこれからも養っていきます。


        
        import ctypes
        import os
        import glob
        import time
        import threading
        import random
        import codecs
        import sys
        
        #importとはpythonでモジュールなどを利用するために使用するもの
        INTERVAL_SEC = 3
        
        
        class BgSlider():
            def __init__(self):
                self.index = 0
                self.directory = None
        
            def setup(self):
                global off
                with codecs.open('path.txt', 'r', 'utf-8') as f:
                    #with構文は、close処理を省略することができる。開始時と終了時の定型処理を必ず実行してくれるというメリットがある。
                    #asを使うことで、ライブラリ名に好きな名前をつけることができる。
                    #path.txtというファイルを好きなディレクトリに書き換える。
                    lines = f.readlines()
                    self.directory = lines[0].strip()
        
            def worker(self):
                path = self.directory + r'\*.jpg'
                path.replace('\\\\', '\\')
                files = glob.glob(path)
                # [print(file) for file in files] # ファイルリストをコンソールにまとめて出力するときに使う
                # file = files[random.randint(0, len(files) - 1)] # ランダムにしたい場合はここを使う
                files = sorted(files) # 順番に表示したい場合はここを使う
                file = files[self.index] # 順番に表示したい場合はここを使う
                print(file)
                ctypes.windll.user32.SystemParametersInfoW(20, 0, file, 0)
                if self.index == len(files) - 1:
                  #pythonで条件分岐を行う際にif文を使用する
                    self.index = 0
                else:
                #elseとは、条件式がFalseの場合行う処理
                    self.index += 1
                time.sleep(INTERVAL_SEC)
        
            def schedule(self, interval, f, wait=True):
                base_time = time.time()
                next_time = 0
                while True:
                    #while文は指定した条件式が真の間、処理を繰り返し実行。基本的な書式→while条件式:条件式が真の時に実行する文
                    try:
                        #tryは例外処理の基本で、その他にexcept
                        t = threading.Thread(target=f)
                        t.start()
                        if wait:
                           #pythonで条件分岐を行う際にif文を使用する
                            t.join()
                        next_time = ((base_time - time.time()) % interval) or interval
                        time.sleep(next_time)
                    except KeyboardInterrupt:
                        #exceptは例外処理の基本で、その他にtryがある
                        exit()
                       
        
        
         if __name__ == "__main__":
            try:
                #tryは例外処理の基本で、その他にexcept
                bg = BgSlider()
                bg.setup()
                bg.schedule(INTERVAL_SEC, bg.worker, False)
            finally:
                #finallyは終了時に常に行う処理のこと
                ctypes.windll.user32.SystemParametersInfoW(20, 0, None, 0)