ここから本文です

Python Tkinter

oss********さん

2014/4/1916:28:02

Python Tkinter

メインループについてなんですが、これら2つの違いは何でしょうか・・?
後者のほうが短いので違いがなければ後者を使おうと思うのですが。

※tk = Tk()


>while True:
tk.update_idletasks()
tk.update()
time.sleep(0.01)


>tk.mainloop()



よろしくおねがいします。

閲覧数:
3,758
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

shi********さん

2014/4/2522:47:29

それは知りませんでした。結論からいうと、メインループにはmainloop() を使うのが一般的です

Tk/Tclのドキュメントを軽く読んでみたんですけど、Exampleを見る限りでは、GUIアプリケーションのトップレベルウィジェットでユーザの入力を待ち続けるのがメインループ mainloop()
ユーザの入力を待つとは限らないのが、update() なんですかね
https://www.tcl.tk/man/tcl8.6/TclCmd/update.htm

次のページにはTk/Tclのmainloop()実行時のライフサイクルっぽいのが乗っています。mainloop() のループ中にupdate()もコールされてますね。
http://wiki.tcl.tk/1527
mainloopは、update, update idletasks, vwait, tkwait が順次呼ばれる形で構成されてるみたいです。

TkinterはTcl/Tkのラッパーなので、ヘルプやドキュメントでわからないときにTcl/Tkの情報にぶつかることはけっこうあります

質問した人からのコメント

2014/4/26 22:58:06

降参 回答ありがとうございます。
また詳しく調べてみます。ありがとうございました。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる