Frame俗稱框架,用來承載放置其他GUI元素,可以理解為一個容器。
它能將 Windows 分成不同的區,然后存放不同的部件. 同時一個Frame 也能再分成多個子Frame。
在有不同的界面邏輯層級和功能區域划分時可以用到,讓交互界面邏輯更加清晰。
示例1:體會Frame指定區域的作用
from Tkinter import *
root = Tk()
fm = []
#以不同的顏色區別各個frame
for color in ['red','blue']:
#注意這個創建Frame的方法與其它創建控件的方法不同,第一個參數不是root
fm.append(Frame(height = 20,width = 100,bg = color))
fm[0].pack()
fm[1].pack()
def Call():
#Label被添加到指定的Frame中了,而不是root默認的最上方
Label(fm[1],text = 'Hello label').pack()
Button(root,text='red',width=5,command=Call).pack(side='left')
root.mainloop()
注意:
一旦Frame上面放置了部件,那么Frame的背景色就會消去,變成無法肉眼辨別的底層容器。
示例2:體會父子Frame划分區域的作用
import Tkinter as tk
window = tk.Tk()
window.title('My Window')
window.geometry('500x300')
#創建主框架frame
frame = tk.Frame(window)
frame.pack()
#創建第二層框架frame,放置在主框架frame上。第二層frame有2個,一個放左,一個放右
frame_l = tk.Frame(frame)
frame_r = tk.Frame(frame)
frame_l.pack(side='left')
frame_r.pack(side='right')
#創建多個標簽,分別放置在第二層的2個frame上
tk.Label(frame_l, text='物料表格', bg='green').pack()
tk.Label(frame_l, text='入庫表格', bg='green').pack()
tk.Label(frame_r, text='物料屬性', bg='yellow').pack()
tk.Label(frame_r, text='入庫屬性', bg='yellow').pack()
window.mainloop()