🌊
Python 親ウィンドウ非表示
import tkinter
# 子ウィンドウ
class ChildWindow:
def __init__(self, parent):
self.parent = parent
self.window = None
self.radio_1 = None
self.radio_2 = None
self.var = tkinter.IntVar() # チェック有無変数
def init(self):
if not self.window:
self.window = tkinter.Toplevel(self.parent)
self.var.set(1) # value=0のラジオボタンにチェックを入れる
# ラジオボタン作成
self.radio_1 = tkinter.Radiobutton(self.window, value=0, variable=self.var, text="幅32")
self.radio_1.place(x=10, y=10)
self.radio_2 = tkinter.Radiobutton(self.window, value=1, variable=self.var, text="幅140")
self.radio_2.place(x=60, y=10)
# ×ボタンの処理をカスタマイズする
self.window.protocol('WM_DELETE_WINDOW', self.this_window_close)
# 親ウィンドウ非表示
self.GetParent().withdraw()
self.window.mainloop()
def this_window_close(self):
#子ウィンドウ非表示
self.window.withdraw()
#親ウィンドウ表示
self.GetParent().deiconify()
# 子ウィンドウのオブジェクト解放。↓これをしないと、子ウィンドウを閉じた後に、再度開くことが出来なくなる。
self.window = None
return "break"
# 親ウィンドウ
class ParentWindow:
def __init__(self):
self.root = tkinter.Tk()
self.sub_root = ChildWindow(self.root)
self.sub_root_failure = None
self.root.geometry(str(320) + "x" + str(200) + "+" + str(200) + "+" + str(200))
self.btn_parent.place(x=10, y=10, width=300, height=25)
# 1つだけ子ウィンドウを生成する
self.btn_child = tkinter.Button(text="子ウィンドウ表示", command=self.sub_root.init)
self.btn_child.place(x=10, y=50, width=300, height=25)
#イベント待機
self.root.mainloop()
def main():
ParentWindow()
if __name__ == "__main__":
main()
Discussion