Tkinter之Frame
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()