飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1346|回复: 2

[Python] 在GUI界面上面使用容器

[复制链接]
  • TA的每日心情

    昨天 14:14
  • 签到天数: 295 天

    [LV.8]以坛为家I

    发表于 2023-1-4 20:31:08 | 显示全部楼层 |阅读模式
    本帖最后由 paypojie 于 2023-1-4 20:34 编辑

    前言

    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()

    代码运行后的截图

    QQ截图20230104203047.png

    我记得以前在学习时 有句话是这么说的 在一个程序中 不能同时使用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()

    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    4 天前
  • 签到天数: 441 天

    [LV.9]以坛为家II

    发表于 2023-1-4 20:50:37 | 显示全部楼层
    谢谢楼主分享
    PYG19周年生日快乐!
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情

    昨天 14:14
  • 签到天数: 295 天

    [LV.8]以坛为家I

     楼主| 发表于 2023-1-4 20:58:42 | 显示全部楼层

    不用谢 嘿嘿,
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表