2

別のスレッドで実行されている tkinter ウィンドウの仮想イベントを生成する必要があります。tkinter がメインスレッドで実行され、イベントが別のスレッドで生成される場合、非 GUI スレッドからの呼び出しevent_generateは安全であると想定されており、うまく機能します。

特定の理由から、イベントを生成するステートメントをメイン スレッドで実行する必要があります (具体的には、これらのステートメントをモジュールのトップレベルに配置する必要があります)。

しかし、root = Tk(); root.mainloop()新しいスレッドとroot.event_generate("<<my-event>>")メインスレッドで行うと、スタックオーバーフローが発生します。root = Tk(); root.mainloop()(メインスレッドとroot.event_generate("<<my-event>>")新しいスレッドで)スレッドを交換すると、すべてが再び機能します。

イベントを生成する前に、root が完全に構成されている (そしてアイドル状態である) ことにも気を配っています。

このセットアップを機能させる方法はありますか?

(私は Python 3.2.3 を使用しています)

4

1 に答える 1

1

自分で答えを見つけました:root.mainloop()セカンダリスレッドにのみ入れroot = Tk()、メインスレッドに保持してください。

于 2012-07-29T12:19:13.970 に答える