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