tkinter的三种布局及属性介绍

部署运行你感兴趣的模型镜像

tkinter的三种布局

概述:

tkinter支持三种布局,pack布局方式、grid布局方式和place布局方式,

这三种布局方式在使用的时候要防止冲突,即在一个ttk.Frame中不能使用两种布局方式,

比如,一个ttk.Frame中ttk.Label使用了grid布局方式,则其他组件如ttk.Button则不能使用pack或place

布局方式。但一个ttk.Frame内部的布局方式不需要与另外的ttk.Frame内部的布局方式保持一致,所以

实际开发中推荐的做法是ttk.Frame本身使用pack布局方式,ttk.Frame内部的各种组件使用grid布局方式。

具体还需要根据实际应用的需求做出一定的调整,但一般都要用ttk.Frame把实际的组件包起来,这样易于

排版布局。

 

pack布局方式支持的所有属性如下,

属性说明
in依赖的父组件
fill取值范围:NONE、X、Y、BOTH
X:横向填充;Y:竖向填充;BOTH:横竖向都填充
side取值范围:TOP、BOTTOM、LEFT、RIGHT
TOP:居于父组件顶部;BOTTOM:居于父组件底部
LEFT:居于父组件左边;RIGHT:居于父组件右边
anchor取值范围:
padx取值范围:屏幕的尺寸值,可以为一个正整数或一个元组,
eg:padx=10,表示这个组件的左右横向距离其他组件的距离都为10,
padx=(10,20),表示这个组件左边的距离是10,右边的距离是20
pady取值范围:屏幕的尺寸值,可以为一个正整数或一个元组,
eg:pady=10,表示这个组件的上下竖向距离其他组件的距离都为10,
padx=(10,20),表示这个组件上面的距离是10,下边的距离是20
ipadx取值范围:屏幕的尺寸值,可以为一个正整数或一个元组,
表示的是组件内部的文字距离组件本身的横向距离
ipady取值范围:屏幕的尺寸值,可以为一个正整数或一个元组,
表示的是组件内部的文字距离组件本身的竖向距离
before取值范围:其他组件的变量值
eg:before=self.my_label,表示这个组件在my_label这个组件后面
after取值范围:其他组件的变量值
eg:after=self.my_label,表示这个组件在my_label这个组件前面

 

网格grid布局方式支持的属性如下,

属性说明
in依赖的父组件
row取值范围:正整数,从0开始,0是第一行
column取值范围:正整数,从0开始,0是第一列
rowspan取值范围:正整数,从1开始,表示组件占据的行数,
例如rowspan=3,表示组件占据3行
columnspan取值范围:正整数,从1开始,表示组件占据的列数,
例如columnspan=3,表示组件占据3列
padx取值范围:屏幕的尺寸值,可以为一个正整数或一个元组,
eg:padx=10,表示这个组件的左右横向距离其他组件的距离都为10,
padx=(10,20),表示这个组件左边的距离是10,右边的距离是20
pady取值范围:屏幕的尺寸值,可以为一个正整数或一个元组,
eg:pady=10,表示这个组件的上下竖向距离其他组件的距离都为10,
padx=(10,20),表示这个组件上面的距离是10,下边的距离是20
ipadx取值范围:屏幕的尺寸值,可以为一个正整数或一个元组,
表示的是组件内部的文字距离组件本身的横向距离
ipady取值范围:屏幕的尺寸值,可以为一个正整数或一个元组,
表示的是组件内部的文字距离组件本身的竖向距离
sticky取值范围:N、E、S、W,是个元组
eg:sticky=(N,E,W),sticky=(N,E,S,W)

 

最后一种绝对布局place用的比较少,有兴趣的可以再研究下。

ttk的布局框架如下,

 

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

Tkinter 中,每个组件(也称为控件或窗口部件)都具有多种属性和方法,用于控制其外观、行为以及与用户的交互。以下是一些常见组件的常用属性和方法的详细介绍。 ### 常用组件属性 1. **`text`** 用于设置组件上显示的文本内容。例如,`Label`、`Button` 等组件都可以使用该属性设置文字内容。 2. **`textvariable`** 用于将组件的文本内容与一个变量绑定,当变量值发生变化时,组件的文本也会自动更新。常用于 `Label` 或 `Entry` 控件。 3. **`width` 和 `height`** 用于设置组件的宽度和高度,单位取决于组件类型。例如,在 `Label` 和 `Button` 中,宽度和高度以字符数为单位;在 `Canvas` 或 `Frame` 中,以像素为单位。 4. **`bg` 或 `background`** 用于设置组件的背景颜色。例如,`bg="red"` 或使用十六进制颜色代码。 5. **`fg` 或 `foreground`** 用于设置组件的前景颜色,如文字颜色。 6. **`font`** 用于设置组件中文本的字体和大小,例如 `font=("Arial", 12)`。 7. **`command`** 通常用于按钮类组件,指定当按钮被点击时要执行的函数。 8. **`state`** 用于控制组件的状态,例如 `state="normal"` 表示可操作,`state="disabled"` 表示不可操作。 9. **`padx` 和 `pady`** 用于设置组件内部的水平和垂直填充间距,常用于布局调整。 10. **`anchor`** 用于控制组件内内容的对齐方式,例如 `anchor="w"` 表示左对齐。 11. **`justify`** 用于设置多行文本的对齐方式,可选值为 `LEFT`、`CENTER` 或 `RIGHT`。 12. **`relief`** 用于设置组件的边框样式,如 `relief="sunken"` 或 `relief="raised"`。 ### 常用组件方法 1. **`pack()`** 用于将组件放置到主窗口中,并采用默认布局方式。适用于简单布局。 2. **`grid(row=, column=)`** 通过网格布局方式将组件放置到指定行和列中,适合复杂布局。 3. **`place(x=, y=)`** 通过绝对坐标将组件放置到窗口中的指定位置。 4. **`config()` 或 `configure()`** 用于动态修改组件的属性值。例如,`label.config(text="新文本")`。 5. **`destroy()`** 用于销毁组件,将其从窗口中移除。 6. **`focus_set()`** 用于将输入焦点设置到该组件上。 7. **`update()` 和 `update_idletasks()`** 用于强制更新界面,确保组件立即显示变化。 8. **`mainloop()`** 启动 Tkinter 的主事件循环,等待用户交互。 9. **`get()`** 用于获取组件的内容,例如 `Entry` 组件的输入内容。 10. **`insert()`** 用于向组件中插入内容,例如在 `Text` 或 `Entry` 组件中添加文本。 11. **`delete()`** 用于删除组件中的内容,例如删除 `Entry` 或 `Text` 中的文本。 12. **`bind()`** 用于绑定事件处理函数,例如 `button.bind("<Button-1>", callback)`。 ### 示例代码:使用 `config` 方法修改标签文本 ```python import tkinter as tk # 创建主窗口 window = tk.Tk() window.title("Tkinter 属性与方法示例") window.geometry("400x300") # 创建标签 label = tk.Label(window, text="初始文本", font=("Arial", 14), fg="blue") label.pack(pady=10) # 修改标签文本的方法 def change_label_text(): label.config(text="文本已更改!", fg="green") # 创建按钮 button = tk.Button(window, text="点击修改文本", command=change_label_text) button.pack() # 进入主循环 window.mainloop() ``` ### 示例代码:获取和删除 `Entry` 组件内容 ```python import tkinter as tk def show_entry_content(): content = entry.get() label.config(text=f"输入内容为:{content}") def clear_entry(): entry.delete(0, tk.END) window = tk.Tk() window.title("Entry 操作示例") window.geometry("400x200") entry = tk.Entry(window, font=("Arial", 14)) entry.pack(pady=10) show_button = tk.Button(window, text="显示内容", command=show_entry_content) show_button.pack(pady=5) clear_button = tk.Button(window, text="清空内容", command=clear_entry) clear_button.pack(pady=5) label = tk.Label(window, text="", font=("Arial", 14)) label.pack(pady=10) window.mainloop() ``` ### 示例代码:绑定事件处理函数 ```python import tkinter as tk def handle_click(event): label.config(text="鼠标左键被点击了!") window = tk.Tk() window.title("事件绑定示例") window.geometry("400x300") label = tk.Label(window, text="点击按钮", font=("Arial", 14)) label.pack(pady=20) label.bind("<Button-1>", handle_click) window.mainloop() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值