Tkinter のイベントループと一緒に独自のコードを実行するにはどうすればよいでしょうか? 質問する

Tkinter のイベントループと一緒に独自のコードを実行するにはどうすればよいでしょうか? 質問する

弟はプログラミングを始めたばかりで、サイエンスフェアのプロジェクトで空を飛ぶ鳥の群れのシミュレーションをしています。コードの大半は書き終えており、うまく動いていますが、鳥は動かなければなりません。つねに

しかし、Tkinter は独自のイベント ループに時間を浪費するため、コードは実行されません。Doing はroot.mainloop()実行され続け、実行されるのはイベント ハンドラーだけです。

彼のコードをメインループと並行して実行する方法はありますか (マルチスレッドなしでは混乱を招くため、シンプルに保つ必要があります)。ある場合、それは何ですか?

move()今のところ、彼は自分の機能を に結び付けるという醜いハックを思いつきました<b1-motion>。そのため、ボタンを押したままマウスを揺らしている限り、それが機能します。しかし、もっと良い方法があるはずです。

ベストアンサー1

afterオブジェクトに対してメソッドを使用しますTk:

from tkinter import *

root = Tk()

def task():
    print("hello")
    root.after(2000, task)  # reschedule event in 2 seconds

root.after(2000, task)
root.mainloop()

メソッドの宣言とドキュメントは次のとおりですafter

def after(self, ms, func=None, *args):
    """Call function once after given time.

    MS specifies the time in milliseconds. FUNC gives the
    function which shall be called. Additional parameters
    are given as parameters to the function call.  Return
    identifier to cancel scheduling with after_cancel."""

おすすめ記事