本帖最后由 paypojie 于 2023-1-4 20:19 编辑
前言
Frame本质上也是一个矩形窗体 与其他控件一样 也需要放在主窗口内
我们可以在主窗口中放置多个Frame控件 在每个Frame控件中 我们可以嵌套一个或者多个Frame 将主窗口划分为多个区域
代码
[Python] 纯文本查看 复制代码 # 使用Frame将主窗口划分为两个区域
from tkinter import *
win = Tk()
win.geometry('400x400+300+200')
# 创建一个frame窗体 用来放置其他的frame窗体
frame1 = Frame(win)
frame1.pack()
frame_left = Frame(frame1)
lb1 = Label(frame_left,text='左侧标签1',bg='green',width=10,height=5).grid(row=0,column=0)
lb2 = Label(frame_left,text='左侧标签2',bg='blue',width=10,height=5).grid(row=1,column=1)
frame_left.pack(side='left')
frame_right = Frame(frame1)
lb1 = Label(frame_left,text='右侧标签1',bg='gray',width=10,height=5).grid(row=0,column=3)
lb2 = Label(frame_left,text='右侧标签2',bg='pink',width=10,height=5).grid(row=1,column=2)
lb3 = Label(frame_left,text='右侧标签2',bg='purple',width=10,height=5).grid(row=1,column=3)
frame_right.pack(side='right')
win.mainloop()
代码运行后的截图
我记得以前在学习时 有句话是这么说的 在一个程序中 不能同时使用pack()和grid()方法 只能二选一 要不然会报错
在这段程序中同时使用了pack()和grid()方法 却没有报错 这是为什么呢 因为在于同的包含小控件是可以同时使用pack()和grid()方法的
当然 在同一个包含小控件中是不能同时使用pack()方法和grid()方法的 在同级别的容器中 是不能混合使用pack()和grid()方法的 只能选取其中一种方法
为了大家更好的理解 请看下面的例子
[Python] 纯文本查看 复制代码 # 这段代码会报错 因为在同级别的容器(窗口)中使用了pack()和grid()方法
from tkinter import *
win = Tk()
frame1 = Frame(win)
frame1.pack()
frame2 = Frame(win)
frame2.grid()
win.mainloop()
[Python] 纯文本查看 复制代码 # 下面这段代码不会报错 因为在同级别的容器(窗口)中只使用了pack()这一种方法
from tkinter import *
win = Tk()
frame1 = Frame(win)
frame1.pack()
frame2 = Frame(win)
frame2.pack()
win.mainloop()
[Python] 纯文本查看 复制代码 # 下面这段代码会报错 frame1和frame2在同一个容器内 所以不能同时使用两种方法
from tkinter import *
win = Tk()
frame = Frame(win)
frame.pack()
frame1 = Frame(frame)
frame1.pack()
frame2 = Frame(frame)
frame2.grid()
win.mainloop() |