我創建了一個 tkinter 應用程式,用戶可以在其中創建多個頂層視窗,并可以選擇從頂層內部關閉它們。我想在主視窗上創建一個按鈕來關閉所有頂層視窗。我該怎么做?有沒有辦法在沒有串列的情況下做到這一點?如果這些頂層是類的一部分,是否還有一種方法可以呼叫所有這些頂層中存在的函式?
uj5u.com熱心網友回復:
這是關于在主視窗中創建一個按鈕以洗掉所有Toplevels 而不列出它們的問題的第一部分的方法。這通過使用通用winfo_children()小部件方法來查找根(主)視窗的所有子小部件來作業。
我不清楚你呼叫它們中存在的函式是什么意思——Toplevel小部件是支持一組預定義方法的預定義類的實體tkinter——你可以像下面的示例代碼一樣呼叫它們child.destroy()。
import tkinter as tk
root = tk.Tk()
root.title('Main')
root.geometry('200x100')
def close_all(master):
for child in master.winfo_children():
if isinstance(child, tk.Toplevel):
child.destroy() # Call method.
button = tk.Button(root, text=f"Close Toplevels",
command=lambda master=root: close_all(master))
button.pack()
for i in reversed(range(4)): # Create them bottom to top.
toplevel = tk.Toplevel()
toplevel.title(f'Toplevel {i 1}')
toplevel.geometry('200x75')
toplevel.lift()
button = tk.Button(toplevel, text="Close me", command=toplevel.destroy)
button.pack()
root.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/490461.html
