ループを回している間に進捗状況が分かる様にTkinterでプログレスバーを表示したいのですが、
処理と同時に動かすことが出来ていません・・・
こういう場合は並列で処理をさせるものなのでしょうか?
よろしくお願いいたします。
import time import tkinter def button_click(): root.destroy() num = 0 while num < 10: time.sleep(1) print("num = " + str(num)) num += 1 print("End") root = tkinter.Tk() root.title('このウインドウは開始すると閉じます') root.geometry("350x100") Static1 = tkinter.Label(text=u'これからループ開始します\ntkinterとか使ってGUIのプログレスバーの進捗確認て終わったら閉じたい\nコンソールが非表示にならない') Static1.pack() btn = tkinter.Button(root, text='開始', command=button_click) btn.place(x=150, y=70) root.mainloop()
※回答ありがとうございます。
サンプルをデバッグしてみて動きはわかりました。ありがとうございます。
今、わたしが作っているものに組み込みたいと思っているのですが・・・どのようにしたらよいかやってみていたらぐちゃぐちゃになってしまい
混乱してしまいました。。。
もし、ヒントでもいただけると嬉しいです。。。
import time import tkinter import tkinter.ttk as ttk import os.path from datetime import datetime file_path = r'C:\temp' file_name = f"{datetime.now():%Y%m%d}.md" chk_path = os.path.join(file_path, file_name) def button_click(): root.destroy() #←ここでウィンドウを1回落としている。この後プログレスバーが出ない #プログレスバーの初期設定?? progressbar = ttk.Progressbar( root, orient="horizontal", length=300, mode="determinate") progressbar.pack() maximum_bar = 10 value_bar = 0 div_bar = 1 progressbar.configure(maximum=maximum_bar, value=value_bar) #プログレスバーの更新 def var_start(value_bar): progressbar.configure(value=value_bar) num = 0 bool1 = True #60秒間ファイルが出来るか探している→見つかった時点で終了 #60秒経過しても見つからない場合も終了 #forでのやり方? while( not( os.path.isfile(chk_path))): time.sleep(1) num += 1 print("num = " + str(num)) if num < 60 and os.path.isfile(chk_path): os.remove(chk_path) bool1 = True break elif num > 60: bool1 = False break print("End") root = tkinter.Tk() root.title('このウインドウは開始すると閉じます') root.geometry("350x100") Static1 = tkinter.Label(text=u'これからループ開始します\ntkinterとか使ってGUIのプログレスバーの進捗確認て終わったら閉じたい\nコンソールが非表示にならない') Static1.pack() btn = tkinter.Button(root, text='開始', command=button_click) btn.place(x=150, y=70) root.mainloop() #ボタンとテキストラベルの作成 #button = tk.Button(text=u"START", command=Click) #button.pack() text_label = tkinter.StringVar() text_label.set("0") label = tkinter.Label(textvariable=text_label) label.pack() root.mainloop()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。