前提・実現したいこと
PythonのTkinterを使ってGUIでファイル等を選択し、処理を行うことが出来るアプリを作っています。この処理中にユーザーに処理中であることを知らせる為、プログレスバーを利用しようとしています。しかし、下記のコードにある通りプログレスバーを扱おうとすると進捗状況が反映出来なかったり、アプリが停止してしまいます。原因や解決策が分かる方に教えていただきたいです。
該当のソースコード
Python
1from tkinter import * 2from tkinter import ttk 3import time 4import tkinter as tk 5 6def button_click(): 7 pbval.set(pbval.get() + 1) 8 root.update() 9 10win = tk.Tk() 11win.title("TEST") 12win.geometry("300x700") 13time.sleep(1) 14win.destroy() 15 16#プログレスバー作成 17root = tk.Tk() 18ttk.Style().theme_use('classic') 19root.title('Progress') 20 21root.columnconfigure(0, weight=1) 22root.rowconfigure(0, weight=1) 23 24# Frame 25frame1 = ttk.Frame(root, padding=10) 26frame1.grid(sticky=(N, W, S, E)) 27frame1.columnconfigure(0, weight=1) 28frame1.rowconfigure(0, weight=1) 29 30pbval = IntVar(value=0) 31pb = ttk.Progressbar( 32 frame1, 33 orient=HORIZONTAL, 34 variable=pbval, 35 maximum=5, 36 length=200, 37 mode='determinate') 38pb.grid(row=0, column=0, sticky=(N, E, S, W)) 39 40 41def ok_click(): 42 def button_click(): 43 pbval.set(pbval.get() + 1) 44 root.update() 45 46 button_click() 47 time.sleep(1) 48 49 button_click() 50 time.sleep(1) 51 52 button_click() 53 time.sleep(1) 54 55 button_click() 56 time.sleep(1) 57 58 button_click() 59 time.sleep(1) 60 61 62 63ok_click() 64 65root.mainloop() 66win.mainloop()
試したこと
・.destroyを使って入力窓を消してから処理中にプログレスバーを表示させる → 入力窓が最初から消えてしまい失敗。

回答1件
あなたの回答
tips
プレビュー