
下記のサンプルのようにcheckにチェックを付け、command(show_selected)を呼び出した際に、時間のかかる処理を実行中であることを label などに表示したいのですが、'実行中'が表示されず、完了後に'実行終了'が表示されます。
'実行中'を表示するようにしたいのですが、ヒントをいただけないでしょうか。
------------------------
import tkinter
def show_selected():
label["text"] = '実行中'
print('チェックボタンを実行します') # 時間のかかる処理を想定しています。
label["text"] = '実行終了'
root = tkinter.Tk()
var = tkinter.IntVar(root)
check = tkinter.Checkbutton(
root,
variable=var,
command=show_selected,
)
check.pack()
label = tkinter.Label(root)
label.pack()
root.mainloop()
-----------------------
No.3
- 回答日時:
ひとつのやり方としては、ラベル更新してから
root.afterでタイマーイベントを登録して
イベントで残りの処理を実行する。
シングルスレッドでできるので比較的簡単。
No.2
- 回答日時:
「labelの表示」は、どこで行われていますか。
print('チェックボタンを実行します') の処理は重くありません。
マルチスレッドでなくてよいならば、
①'実行中'を表示する。
②本体の処理を行う。
③'実行終了'を表示する。
とすればよいと思います。
①から③までの間は、フリーズみたいになります(実際は動いていても画面が動かない)。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
[teraterm] waitコマンドで停止...
-
これってパソコンの最適化が完...
-
バッチファイルの内容を表示さ...
-
「読み取りと実行」と「読み取...
-
exeファイルを実行するとコマン...
-
VBscriptが起動しない?
-
Excel(エクセル) VBA プロシー...
-
imacroで組んだマクロをバッチ...
-
Windows System32 Security Hea...
-
バッチファイル(処理) CSVフ...
-
VBAのコマンドプロンプトでpaus...
-
コマンドプロンプトのコンパイ...
-
VBScriptの実行完了を待ってか...
-
VB.NETでのDOSコマンドを実行に...
-
ブラウザーのリンクをクリック...
-
netstat.exe を実行でエラー(...
-
エクセル フォルダの画像を画...
-
Makefileについて質問です。あ...
-
VB2010 で指定時間にプロシジャ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
[teraterm] waitコマンドで停止...
-
これってパソコンの最適化が完...
-
「読み取りと実行」と「読み取...
-
バッチファイルの内容を表示さ...
-
exeファイルを実行するとコマン...
-
VBscriptが起動しない?
-
複数のbatファイルを自動実行し...
-
エクセル フォルダの画像を画...
-
ネットワーク名が見つかりません
-
PDFファイルを開き、印刷し、閉...
-
Excel(エクセル) VBA プロシー...
-
Windows System32 Security Hea...
-
VBScriptでコマンドプロンプト...
-
Access の VBA 実行中に他の操...
-
【VB.NET】exeを実行すると「発...
-
バッチファイルが不正終了して...
-
16進数の変換処理
-
Excel VBA ステップインが途中...
-
pythonスクリプトを管理者権限...
おすすめ情報
show_selected が呼び出されたときに
label["text"] = '実行中'
は実行されても、labelの表示は変わらず、
label["text"] = '実行終了'
が実行された場合にlabelの表示が「実行終了」になるのはなぜなんでしょうか。
ステップインで確認しても、label["text"] = '実行中' ではlabelの表示が変わりません。
print('チェックボタンを実行します') の処理が重いかどうかは関係ない気がします。