Tkinter 学习笔记 —— 布局管理
来源:互联网 发布:预装软件下载 编辑:程序博客网 时间:2024/06/06 18:13
本笔记基于 Tkinter 8.5 reference: a GUI for Python
在 Tkinter 中有三种不同的“几何管理器”:
但,.grid()
几何管理器几乎能用于所有的方面。其将每个窗口或框架都视为一个表格,或者说网格。
- 单元格(cell)是行、列交叉所形成的区域。
- 每列最宽的单元格的宽度是该列的宽度。
- 每行最高的单元格的高度是该行的高度。
- 对于那些部件不能填满的单元格,你可以自由安排额外空间。可以在部件外留出额外空间,也可以在水平或垂直方向上拉伸部件以适应它。
- 可以将多个单元格组合成一个较大的区域,该过程被称为 spanning 。
当创建一个部件时,它不会立刻出现,直到你在几何管理器中注册它:
self.thing = tk.Constructor(parent, ...)self.thing.grid(...)
其中, Constructor 是诸如:Button 、Frame 部件类中的一个。所有的部件都有 .grid() 方法,如此你就可以告诉几何管理器将该部件放在哪儿。
.grid() 方法
在应用上显示部件 w :
w.grid(option=value, ...)
表 1. .grid() GM 参数
具体如下:
- 如果不提供 sticky 属性,默认行为是将部件放在单元格正中。
- 可以使用 sticky = tk.NE (右上), tk.SE (右下), tk.SW (左下)或 tk.NW (左上)将部件放在单元格的一角。
- 可以使用 sticky = tk.N (顶部中心), tk.E (右中心), tk.S (底部中心)或 tk.W (左中心)将部件对齐在单元格的一侧。
- 使用 sticky = tk.N+tk.S 来垂直拉伸,但水平居中。
- 使用 sticky = tk.E+tk.W 来水平拉伸,但垂直居中。
- 使用 sticky = tk.N+tk.E+tk.S+tk.W 同时水平和垂直拉伸部件以填充单元格。
- 其他组合也是可以的。
例子
#!/usr/bin/env python3import tkinter as tkclass Application(tk.Frame): # application class must inherit from tkinter's Frame class def __init__(self, master = None): tk.Frame.__init__(self, master = None) # calls the constructor for the parent class, Frame self.grid() # to make the application actually appear on the screen self.createWidgets() def createWidgets(self): self.hightLabel = tk.Label(self, text = 'Hight') self.hightLabel.grid() self.widthLabel = tk.Label(self, text = 'Width') self.widthLabel.grid()app = Application()app.master.title('Test 02')app.mainloop()
会产生:
添加文本框并对齐标签:
[...]def createWidgets(self): self.hightLabel = tk.Label(self, text = 'Hight') self.hightLabel.grid() self.widthLabel = tk.Label(self, text = 'Width') self.widthLabel.grid() self.entry1 = tk.Entry(self) self.entry2 = tk.Entry(self) self.entry1.grid(row = 0, column = 1) self.entry2.grid(row = 1, column = 1)[...]
我们得到了这个:
加入复选按钮:
def createWidgets(self): [...] self.checkButton = tk.Checkbutton(self, text = 'Keep My Password') self.checkButton.grid(columnspan = 3, sticky = tk.W)
添加一个滑稽按钮:
def createWidgets(self): [...] photo = tk.PhotoImage(file = "huaji-small.gif") self.button = tk.Button(self, image = photo) self.button.image = photo self.button.grid(row = 0, column = 2, columnspan = 2, rowspan = 2, sticky = 'wens', padx = 5, pady = 5)
我们得到这个:
其他的网格管理方法
grid_bbox(column=None, row=None, col2=None, row2=None)
grid_bbox 方法
返回 4 元素元组,用于描述部件中,网格系统部分或全部边框。返回的前两个数字是区域左上角的 x 和 y 坐标,后二个数字是宽度和高度。
grid_forget()
将该部件从网格管理器中移除,但其依然是存在的,只是看不见而已。可以使用 grid 或其他管理器使其再次可见。
grid_info()
返回一个字典,其键是部件的选项名,而相应的值则是选项的值。
grid_location(x, y)
给定一个相对于容器部件的坐标 (x, y) ,该方法返回一个元组 (col, row) 描述其在屏幕的坐标。
grid_propagate(flag)
通常,部件都会根据其内容自动调节自身尺寸,如果将 flag 设为 False 则会强制设置部件为特定大小。
grid_remove()
同 grid_forget() 类似,但如果你再次 grid ,它会重用之前的配置项。
grid_size()
返回该部件的网格系统的行数和列数。
grid_slaves(row=None, column=None)
返回一个由部件管理的子部件组,通过 row 和 column 选择特定行列的子部件。
例子
配置行列大小
grid_columnconfigure(index, **options)
设置单元格列选项
index 为列序号, options 参见表 2 。
grid_rowconfigure(index, **options)
设置单元格行选项
index 为行序号, options 参见表 2 。
表 2. .grid() 行列配置选项
例子
参考
An Introduction to Tkinter
Tkinter 8.5 reference: a GUI for Python
- Tkinter 学习笔记 —— 布局管理
- Tkinter 学习笔记 —— 标准属性
- Tkinter 学习笔记 —— Button 部件
- Python-Tkinter几何布局管理
- Tkinter 学习笔记 —— 第一个应用程序
- GTK+学习笔记2——布局管理
- Andoroid学习笔记05——Activity布局管理
- GTK+学习笔记2——布局管理
- Python Tkinter 简单布局学习
- tkinter 学习笔记
- Python Tkinter学习笔记
- Python-Tkinter几何布局管理(转)
- Python-Tkinter几何布局管理(转)
- 布局管理(tkinter,Python3.x)
- Python GUI之tkinter布局管理
- tkinter: 布局管理 (Layout management) 之 .grid()
- python之tkinter中的几何布局管理
- Python模块学习系列(6)----Tkinter(几何布局管理)
- Libevent 官方文档学习笔记(2. bufferevent部分)
- dede采集或更新搜索文章时cpu100%跑满卡死解决方法
- BZOJ 3781 小B的询问 莫队
- Libevent 官方文档学习笔记(3. evbuffer部分)
- Linux vi vim 试用心得
- Tkinter 学习笔记 —— 布局管理
- Golang 死循环的多种写法
- 浅谈JavaScript随机生成数
- linux下IPTABLES配置详解
- linux 不同服务器scp免密远程传输文件实例
- 设计模式——命令模式(Command Pattern)
- 使用Axis2开发webservice服务端接口+axis开发的客户端调用
- Tkinter 学习笔记 —— 标准属性
- C++__自定义数据类型