簡體   English   中英

通過 Tkinter 中的按鈕關閉窗口並打開一個新窗口

[英]Closing a window and opening a new one via a button in Tkinter

我想知道是否有一種方法可以打開 Toplevel() 的新實例並通過按下按鈕關閉當前實例,即關閉當前窗口並打開一個新窗口。 這是有問題的代碼:

def start(self):
        self.name = tk.DoubleVar()
        name_w = tk.Toplevel(root)
        name_w.wm_title("Enter name")
        f1 = tk.Frame(name_w)
        f1.pack()
        L1 = tk.Label(f1, text="Please enter your name!")
        L1.grid(row=0, column=0)
        E1 = tk.Entry(f1, textvariable=self.name)
        E1.grid(row=1, column=0)
        N1 = tk.Button(f1, text="Next", command = self.Q1)
        N1.grid(row=2, column=0)

在這種情況下,我希望調用 self.Q1,同時銷毀 name_w。 有沒有辦法做到這一點? 謝謝。

是的,這是可能的。 要關閉Toplevel的實例,只需將其銷毀即可。 您需要保存對窗口的引用。 在你的情況下,我要么讓Q1銷毀窗口,要么創建一個單獨的函數來調用Q1然后銷毀窗口。 這一切都取決於Q1的主要目的是什么。

例如:

def start(self):
    ...
    self.new_window = name_w
    ...

def quit_window(self):
    self.Q1()
    self.new_window.destroy()

如果您有多個這些,您可能需要將窗口引用存儲在列表或字典中,但基本機制是相同的:使用.destroy()銷毀窗口。

當然,這不是唯一的方法。 您可以使用 lambda 或functools.partial以及一個接受要銷毀的窗口名稱的函數,或者您可以使用嵌套函數等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM