5. 框架控件 Frame

什么是框架控件?

框架控件(Frame) 是 Tkinter 中的一个容器控件,用于组织和分组其他控件(如按钮、标签、输入框等)。它类似于 主窗口,内部可以有自己的布局和控件放置方式,一个主窗口可以有多个Frame,这样可以实现更复杂的布局方式。

作用

  1. 结构化布局:将相关控件放在同一个 Frame 中,便于管理。
  2. 复杂界面设计:嵌套多个 Frame 实现更灵活的布局。
  3. 样式控制:统一设置背景色、边框等。

Frame 控件常用属性:

属性
说明
类型
bg
背景色
str
height
int
width
int
bd或borderwidth
边框宽度(默认 0,无边框)
int
relief
边框样式("flat"、"raised"、"sunken"、"solid"、"ridge"、"groove")
str

示例

import tkinter

root = tkinter.Tk()
root.title("Frame 示例")

# 创建一个 Frame,并放置到 root 窗口
frame = tkinter.Frame(root, bg="blue", bd=2, relief="solid")
frame.pack(padx=10, pady=10, fill=tkinter.BOTH, expand=1)  # 使用 pack 布局

root.mainloop()

效果如图

tkinter的 Frame 示例1效果图

示例2

import tkinter
from tkinter.constants import *
root = tkinter.Tk()
frame = tkinter.Frame(root, relief=RIDGE, borderwidth=2)
frame.pack(fill=BOTH,expand=1)
label = tkinter.Label(frame, text="Hello, World")
label.pack(fill=X, expand=1)
button = tkinter.Button(frame,text="Exit",command=root.destroy)
button.pack(side=BOTTOM)
root.mainloop()

效果如图

tkinter的 Frame 示例2效果图

示例3

import tkinter

root = tkinter.Tk()
root.title("嵌套 Frame 示例")

# 外层 Frame(顶部导航栏)
top_frame = tkinter.Frame(root, bg="gray", height=50)
top_frame.pack(fill=tkinter.X)  # 水平填充

# 内层 Frame(内容区域)
content_frame = tkinter.Frame(root, bg="lightyellow")
content_frame.pack(fill=tkinter.BOTH, expand=True)

# 在 content_frame 中添加控件
label = tkinter.Label(content_frame, text="主要内容", bg="lightyellow")
label.pack(pady=50)

root.mainloop()

效果如图

frame嵌套效果图