[ 実現したいこと ]
PySimpleGUIを用いて、開始ボタンを押すと指定した動作を一定間隔で実行するGUIを作成しています。以下に示すコードで実装しているのですが、指定した処理を中断させるのに、現状ではコマンドプロンプト上でCtrl+Cを入力することで実現しています。
この中断方法を、ボタンのGUIを利用して実現したいと考えてます。
python
1import PySimpleGUI as sg 2import pyperclip 3import subprocess 4import time 5import threading 6import pyautogui as pgui 7 8#変数宣言*************** 9#省略 10#************************ 11 12def set_pisi: 13 #省略 14 15def update(i): 16 #繰り返す処理(省略) 17 18sg.theme('LightGray1') 19layout = [ [sg.Text('切り替え時間 約',font=('小塚ゴシック',12)),sg.InputText(default_text='5',size=(2,3), key='enter_time'),sg.Text('秒(最低2)',font=('小塚ゴシック',12))], 20 [sg.Text('切り替えTabの数',font=('小塚ゴシック',12)),sg.InputText(default_text='2',size=(2,3), key='tab_number'),sg.Text('(最高4)',font=('小塚ゴシック',12))], 21 [sg.Text('座標初期値は切り替えTab数2かつ以下を想定',font=('小塚ゴシック',10),text_color='#000000')], 22 [sg.Text(' →総Tab数4~5 : 切り替えTab=3,4',font=('小塚ゴシック',10))], 23 [sg.Text('コマンドプロンプト上でCtrl + C でループ抜ける',font=('小塚ゴシック',10),text_color='#000000')], 24 [sg.Button('開始',key='start'),sg.Button('座標設定',key='posi')] ] 25 26window = sg.Window('Enter/Tag自動',layout,resizable=True,size=(300,180)) 27 28while True: 29 event, values = window.read() 30 31 if event == 'posi': 32 #省略 33 34 if event == 'start': 35 #省略 36 #ループに入るために値変更 37 auto = True 38 39 if event == None: 40 break 41 42 if auto: 43 try: 44 #以下繰り返し処理のためのループ 45 #このループをボタンクリックで抜けたい 46 while True: 47 48 t = threading.Thread(target = update(tab_posi)) 49 t.start() 50 next_time = ((base_time - time.time()) % interval) or interval 51 time.sleep(next_time) 52 53 #省略 54 55 #Ctrl+Cでループを抜ける 56 except KeyboardInterrupt: 57 print("out roop") 58 auto = False 59 60window.close()
このコードを基盤に改良して実現できるのが一番ですが、
根本から変更しなければ実現できないのであれば、最初から作り直そうと思います。
是非ご教授お願いします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/14 09:11