博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tkinter模块:Grid几何管理器
阅读量:5264 次
发布时间:2019-06-14

本文共 1989 字,大约阅读时间需要 6 分钟。

Tkinter模块是Python的标准库模块之一,也是使用Python语言进行图形化用户界面(GUI)开发的基础。

本文介绍一下Tkinter模块的Grid几何管理器。

使用VB、MFC进行GUI开发是所见即所得的,即你可以把控件拖入界面中,随意放置、随意伸缩之后,界面变成什么样子,程序执行时生成的界面还是这个样子,非常方便。Python不一样,界面以及界面中的组件都需要你在源代码中生成,界面和组件的外观、大小都需要你使用代码进行设置。相比之下,使用Python进行GUI开发不是很方便,但这通常不是什么难事,Python语言的简洁性保证了GUI开发的高效和严格。

当界面中的组件多起来之后,我们就需要对这些组件进行布局。Tkinter模块有三种高级布局管理方法:其一是Place几何管理器,其二是Packer几何管理器,其三是Grid几何管理器。Tkinter模块的几何管理器是通过在父容器组件(通常是Frame或顶层窗口)内布局子组件来工作的。当我们要求一个组件将自己填充(pack)或网格化(grid)时,实际上是要求它的父组件将它布局在其他子组件中。通过pack,我们可以提供约束或边,让几何管理器恰如其分地布局好组件;通过grid,我们将组件放置在父容器的行和列中,仿佛父容器组件就是一张表格。另外要注意:pack和grid对于相同的父容器组件来说,它们是互斥的。即在给定的父容器中,我们要么用pack来布置组件,要么用grid来布置组件,但无法对同一个组件同时使用二者。

  • Packer几何管理器适合在父容器组件的垂直方向上进行布局,其参数较少,使用简单方便。
  • Grid几何管理器适合在父容器组件的水平、垂直方向上进行布局,适用于组件较多或需水平放置多个组件的情况。

Grid几何管理器的使用方法为:

widget.grid(**kw)

组件的布局效果取决于grid方法的关键字参数,来看一下这些关键字参数:

# 将组件放置在x行,y列的位置widget.grid(row=x, column=y)

下面是一个示例:

1 import tkinter 2 from tkinter.constants import * 3  4 tk = tkinter.Tk() 5  6 frame = tkinter.Frame(tk, relief=RIDGE, bg='blue', borderwidth=2) 7 frame.pack(fill=BOTH, expand=1) 8  9 button1 = tkinter.Button(frame, text="button 1")10 button1.grid(row=0, column=0)11 12 button2 = tkinter.Button(frame, text="button 2")13 button2.grid(row=1, column=1)14 15 button3 = tkinter.Button(frame, text="button 3")16 button3.grid(row=2, column=2)17 18 tk.mainloop()

其运行效果如下:

 

将剩下的参数全部列出:

# 设置单元格在垂直方向上跨越的行数widget.grid(rowspan=n)# 设置单元格在水平方向上跨越的列数widget.grid(columnspan=n)# 设置组件里面水平方向上空白区域的大小widget.grid(ipadx=value)# 设置组件里面垂直方向上空白区域的大小widget.grid(ipady=value)# 设置组件外面水平方向上空白区域的大小widget.grid(padx=value)# 设置组件外面垂直方向上空白区域的大小widget.grid(pady=value)# 组件在单元格中的默认对齐方式是居中,可使用sticky关键字进行修改# 组件与单元格的顶端对齐widget.grid(sticky=N)# 组件与单元格的底端对齐widget.grid(sticky=S)# 组件与单元格的右端对齐widget.grid(sticky=E)# 组件与单元格的左端对齐widget.grid(sticky=W)# 拉伸组件的高度,使其与单元格的顶端和底端都对齐widget.grid(sticky=N+S)# 拉伸组件的宽度,使其与单元格的左端和右端都对齐widget.grid(sticky=E+W)# 拉伸组件的高度,使其与单元格的顶端和底端都对齐,并将组件放置在单元格的右端widget.grid(sticky=N+S+E)# 其他对齐方式

 

转载于:https://www.cnblogs.com/pyhou/p/9645835.html

你可能感兴趣的文章
Java多线程系列——原子类的实现(CAS算法)
查看>>
在Ubuntu下配置Apache多域名服务器
查看>>
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>
[Source] Machine Learning Gathering/Surveys
查看>>
HTML <select> 标签
查看>>
类加载机制
查看>>
tju 1782. The jackpot
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>
AX 2009 Grid控件下多选行
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>