Python tkinter之Frame(容器)
1、Frame的基本属性
# -*- encoding=utf-8 -*- import tkinter from tkinter import * if __name__ == '__main__': win = tkinter.Tk() # 窗口 win.title('南风丶轻语') # 标题 screenwidth = win.winfo_screenwidth() # 屏幕宽度 screenheight = win.winfo_screenheight() # 屏幕高度 width = 500 height = 400 x = int((screenwidth - width) / 2) y = int((screenheight - height) / 2) win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # 大小以及位置 frame = Frame( master=win, # 父容器 bg='yellow', # 背景颜色 relief='groove', # 边框的3D样式 flat、sunken、raised、groove、ridge、solid。 bd=3, # 边框的大小 height=100, # 高度 width=100, # 宽度 padx=1, # 内间距,字体与边框的X距离 pady=1, # 内间距,字体与边框的Y距离 cursor='circle', # 鼠标移动时样式 arrow, circle, cross, plus... ) frame.pack() win.mainloop()
2、不同的Frame使用不同的布局
# -*- encoding=utf-8 -*- import tkinter from tkinter import * if __name__ == '__main__': pass w = tkinter.Tk() # 窗口 w.title('测试') # 标题 w.geometry('200x100+30+30') # 大小以及位置 frame = Frame() # 定义容器 Button( master=frame, # 父容器为frame text='容器1上的按钮', # 文本 ).pack() frame2 = Frame() # 定义容器 Button( master=frame2, # 父容器为frame2 text='容器2上的按钮', # 文本 ).grid(row=0, column=0) Label(frame2, text='容器2上的Lable', bg='yellow', fg='pink').grid(row=0, column=1) frame.pack() frame2.pack() w.mainloop()
3、是否自动根据子组件改变自身大小
备注:
①默认自动根据子组件改变自身大小,可通过.propagate(False或True)进行设置
# -*- encoding=utf-8 -*-
import tkinter
from tkinter import *
if __name__ == '__main__':
win = tkinter.Tk() # 窗口
win.title('南风丶轻语') # 标题
screenwidth = win.winfo_screenwidth() # 屏幕宽度
screenheight = win.winfo_screenheight() # 屏幕高度
width = 500
height = 400
x = int((screenwidth - width) / 2)
y = int((screenheight - height) / 2)
win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # 大小以及位置
frame1 = Frame(
master=win, # 父容器
bg='yellow', # 背景颜色
relief='groove', # 边框的3D样式 flat、sunken、raised、groove、ridge、solid。
bd=3, # 边框的大小
height=100, # 高度
width=100, # 宽度
padx=1, # 内间距,字体与边框的X距离
pady=1, # 内间距,字体与边框的Y距离
cursor='circle', # 鼠标移动时样式 arrow, circle, cross, plus...
)
frame1.pack()
frame2 = Frame(
master=win, # 父容器
bg='yellow', # 背景颜色
relief='groove', # 边框的3D样式 flat、sunken、raised、groove、ridge、solid。
bd=3, # 边框的大小
height=100, # 高度
width=100, # 宽度
padx=1, # 内间距,字体与边框的X距离
pady=1, # 内间距,字体与边框的Y距离
cursor='circle', # 鼠标移动时样式 arrow, circle, cross, plus...
)
frame2.pack()
# 未设置propagate(False)时自动根据子组件改变自身大小
frame3 = Frame(
master=win, # 父容器
bg='yellow', # 背景颜色
relief='groove', # 边框的3D样式 flat、sunken、raised、groove、ridge、solid。
bd=3, # 边框的大小
height=100, # 高度
width=100, # 宽度
padx=1, # 内间距,字体与边框的X距离
pady=1, # 内间距,字体与边框的Y距离
cursor='circle', # 鼠标移动时样式 arrow, circle, cross, plus...
)
frame3.pack()
frame3.propagate(False) # 不自动根据子组件改变自身大小
Label(frame2, text='标签', width=3, height=1).pack(side=TOP)
Button(frame2, text='按钮', ).pack(side=TOP)
Label(frame3, text='标签', ).pack(side=TOP)
Button(frame3, text='按钮', ).pack(side=TOP)
win.mainloop()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示