2013-08-07 56 views
2

我想根據用戶請求在運行時重新排列PanedWindows中的幀。以前我爲每個幀指定了主設備(這裏是pw1)。例如:tk:我需要提及小部件的主人嗎?

import Tkinter as tk 

root = tk.Tk() 

pw1 = tk.PanedWindow(orient=tk.HORIZONTAL, sashpad=2, 
    sashwidth=4, sashrelief=tk.RAISED) 
pw1.pack(fill=tk.BOTH, expand=1) 

frame1 = tk.Frame(pw1, bg='red',width=100, height=100) 
frame2 = tk.Frame(pw1, bg ='yellow',width=100,height=100) 

# This seems to do the same thing: 
# frame1 = tk.Frame(bg='red',width=100, height=100) # vs. tk.Frame() 
# frame2 = tk.Frame(bg ='yellow',width=100,height=100) 

pw1.add(frame1, sticky=tk.NSEW) 
pw1.add(frame2, sticky=tk.NSEW) 

root.mainloop() 

指定主站的優點是什麼?

回答

0

master參數表可以解釋爲parent。通過這將在parent.children屬性中添加一個新的密鑰。

如果打印pw1.children當你不及格master不執行pw1.add()你會看到它返回一個空的字典。

print pw1.children 
#{} 

pw1.add()方法還包括在pw1.children字典添加的窗口小部件。我仍不明白爲什麼當你通過master時,窗口部件不會自動顯示。

+0

小部件在帶或不帶主參數的情況下自動顯示。只有當主人未被指定時,重新排列這些框架才能正常工作。所以,聽起來指定主人通常是多餘的。 –