前提・実現したいこと
ここに質問の内容を詳しく書いてください。ボールドテキスト
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
python3でマルチスレッドを使って tkinter のプログレスバーを作っています。
かなりいいところまで来た感じなのですが、重い処理が終了した時点でのプログレスバーの止め方がわかりません。
下のコードで言うと、stop_flg が True になったことは捕捉できたのですが、スレッドがどうしても止まってくれません。
プログレスバーが表示されているフレームの「×」をクリックした時に起こることを python のコードで実現したいと思っているのですが、そのやり方がわかりません。
エラーメッセージ
該当のソースコード
import time import concurrent.futures import paramiko import scp import sys from tkinter import * import tkinter.ttk as ttk stop_flg = False def func1(): remoteDir = '/volume1/web/sample' with paramiko.SSHClient() as ssh: ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname='192.168.0.x', port=22, username='user', password='pass') with scp.SCPClient(ssh.get_transport()) as scpc: scpc.get( remote_path = remoteDir, local_path = '/home/user/temp, recursive = True) global stop_flg stop_flg = True func2().stop() def func2(): app = Tk() pbIndeterminateVer = ttk.Progressbar(orient=HORIZONTAL, length=200, mode='indeterminate') pbIndeterminateVer.pack(side="left") pbIndeterminateVer.start(10) app.geometry("200x40") app.title("download") print(stop_flg) if stop_flg == True: print('stop_flg is true') quit = True app.mainloop() if __name__ == "__main__": quit = False executor = concurrent.futures.ThreadPoolExecutor(max_workers=2) executor.submit(func1) executor.submit(func2) exit()
試したこと
app.destroy()
sys.exit()
os.exit()
os.kill(os.getpid(), signal.SIGKILL)
すべてダメでした。
そもそも不可能なことをやろうとしているんでしょうか?
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。