Toplevel()
親が閉じたときに閉じないtkinterの子ウィンドウをどのように生成すればよいですか?
親に子ウィンドウの「参照カウント」を保持させ、インターセプトして、すべての子がなくなったときにWM_DELETE_WINDOW
のみ呼び出す必要がありますか?root.destroy()
それとも、独自の tk を使用して別のスレッドプロセスを生成することは許容されるのmainloop
でしょうか?
それとももっとエレガントな方法がありますか?
編集
私は現在、この方法で物事を行っています
root = Tk()
app = App(root) # doesn't call Toplevel()
root.mainloop()
whereはを呼び出さずApp.__init__()
に にウィジェットを追加し、ある時点でこの関数を使用して新しいウィンドウを生成します。root
Toplevel()
def new_window():
root = Tk()
window = App2(root) # doesn't call Toplevel() either
root
innew_window()
は元の とは異なる変数であり、 へのroot
別の呼び出しによって取得されることに注意してくださいTk()
。
これはすべて、正しいことをしているように見えます。つまり、子ウィンドウは親から独立して存在し、両方が閉じられた後、python プロセスは終了します。
それで私の質問は、それは理にかなっていますか、それとも私はここでひどく間違ったことをしていますか?