tkinter教程之grid篇

上传人:第*** 文档编号:31769995 上传时间:2018-02-09 格式:DOC 页数:4 大小:32KB
返回 下载 相关 举报
tkinter教程之grid篇_第1页
第1页 / 共4页
tkinter教程之grid篇_第2页
第2页 / 共4页
tkinter教程之grid篇_第3页
第3页 / 共4页
tkinter教程之grid篇_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《tkinter教程之grid篇》由会员分享,可在线阅读,更多相关《tkinter教程之grid篇(4页珍藏版)》请在金锄头文库上搜索。

1、Tkinter 教程之 Grid 篇# Tkinter 参考中最推荐使用的一个布局器。实现机制是将 Widget 逻辑上分割成表格,在指定的位置放置想要的 Widget 就可以了。1.第一个 Grid 例子# -*- coding: cp936 -*-# 使用 grid 来布局组件from Tkinter import *root = Tk()# 创建两个 Labellb1 = Label(root,text = Hello)lb2 = Label(root,text = Grid)lb1.grid()lb2.grid()root.mainloop()# grid 有两个最为重要的参数,用来指

2、定将组件放置到什么位置,一个是 row,另一个是 column。如果不指定 row,会将组件放置到第一个可用的行上,如果不指定 column,则使用第一列。2.使用 row 和 column 来指定位置# -*- coding: cp936 -*-# 使用 grid 来布局组件from Tkinter import *root = Tk()# 创建两个 Labellb1 = Label(root,text = Hello)lb2 = Label(root,text = Grid)lb1.grid()# 指定 lb2 为第一行(使用索引 0 开始) ,第二列(使用索引 0 开始)lb2.grid

3、(row = 0,column = 1)root.mainloop()# grid 有两个最为重要的参数,用来指定将组件放置到什么位置,一个是 row,另一个是 column。如果不指定 row,会将组件放置到第一个可用的行上,如果不指定 column,则使用第一列。注意这里使用 grid 时不需要创建,直接使用行列就可以。3.为其它组件预定位置# 可以使用 row/column 来指定组件的放置位置,并预先留出空间,以务其它需要。# -*- coding: cp936 -*-# 使用 grid 来布局组件from Tkinter import *root = Tk()# 创建两个 Label

4、Label(root,text = Hello).pack()# 在第一行,第 10 列放置 lb2Label(root,text = Grid).grid(row = 0,column = 10)# Lable(root,text = 3).grid(row = 0,column = 5)root.mainloop()# 这个例子中将 lb2 放置到第 1 行,第 11 列位置上,但运行结果与上一例从效果上看不出太大的区别。原因是:如果这个位置没有组件的话,它是看不可见的。4.将组件放置到预定位置上去# -*- coding: cp936 -*-# 使用 grid 来布局组件from Tki

5、nter import *root = Tk()# 创建两个 LabelLabel(root,text = 1).grid()# 在第 1 行,第 11 列放置 lb2Label(root,text = 2).grid(row = 0,column = 10)Label(root,text = 3).grid(row = 0,column = 5)root.mainloop()# 可以看到 Label(3)是位置 Label(1)和 Label(2)之间了,即 Label(2)是在 11 列,Label(3)位于第 3 列5.将两个或多个组件同一个位置# -*- coding: cp936 -

6、*-# 多个组件同时 grid 到同一个表格位置from Tkinter import *root = Tk()# 创建两个 Labellb1 = Label(root,text = 1)lb2 = Label(root,text = 2)# 将 lb1 和 lb2 均 grid 到(0,0)位置lb1.grid(row = 0,column = 0)lb2.grid(row = 0,column = 0)def forgetLabel():# grid_slaves 返回 grid 中(0,0)位置的所有组件# grid_forget 将这个组件从 grid 中移除(并未删除,可以使用 gr

7、id 再将它显示出来)print root.grid_slaves(0,0)0.grid_forget() # 我测试时 grid_salves 返回的第一个值为 lb2,最后 grid 的那一个 Button(root,text = forget last,command = forgetLabel).grid(row = 1)root.mainloop()# 这段代码是用来证明,多个组件同时放置到同一个位置上会产生覆盖的问题。对于 grid_slaves 返回的组件 list 如何排序,我没有去查想着资料,在这个例子中使用索引 0,返回的正好是 lb2,然后再使用 grid_forget

8、将这个删除从grid 中移除,可以看到 lb1 显示出来了。6.改变列(行)的属性值# -*- coding: cp936 -*-# 设置 column 的属性(columnconfigure)from Tkinter import *root = Tk()# 创建两个 Labellb1 = Label(root,text = 1,bg = red)lb2 = Label(root,text = 2,bg = blue)# 将 lb1 和 lb2 分别放置到第 1 行的 1,2 列位置上lb1.grid(row = 0,column = 0)lb2.grid(row = 0,column =

9、1)# 指定列的最小宽度为 100root.columnconfigure(0,minsize = 100)root.mainloop()# 1 与 2 的距离变的远一些了。# 但如果这个位置没有组件存在的话这个值是不起作用的.# 设置列或行(rowconfigure)的属性时使用父容器的方法,不是自己调用。7.组件使用多列(多行)# -*- coding: cp936 -*-# 使用多行(多列)from Tkinter import *root = Tk()# 创建如下布局(一个字符占用一个 grid 位置)# A E# B C# D# A 占用(0,0)(0,1),B 占用(1,0),C

10、占用(1,1),D 占用(2,0),E 占用(0,2)# 创建 5 个 Label,分别以背景色区别lbA = Label(root,text = A,bg = red)lbB = Label(root,text = B,bg = blue)lbC = Label(root,text = C,bg = red)lbD = Label(root,text = D,bg = blue)lbE = Label(root,text = E,bg = blue)# 以下为布局参数设置lbA.grid(row = 0,column = 0,columnspan = 2)lbB.grid(row = 1,c

11、olumn = 0)lbC.grid(row = 1,column = 1)lbD.grid(row = 2)lbE.grid(row = 0,column = 2)root.mainloop()# A 与 B、D 的区别,它左边已改变,由于使用了两个表格;# C 与 E 的区别:C 的右边与 E 的左边对齐,也就是说 E 被放置到第 2 列的下一个位置了,原因由于 A 已使用了第 2 列。8.设置表格中组件的对齐属性# -*- coding: cp936 -*-# 使用 sticky 设置对齐方式from Tkinter import *root = Tk()# 创建两个 LabelLabel(root,text = hello sticky).grid()Label(root,text = Tkinter).grid()# 创建两个 Label,并指定 sticky 属性Label(root,text = hello sticky).grid(sticky = W)Label(root,text = Tkinter).grid(sticky = W)root.mainloop()# 默认属性下,组件的对齐方式为居中,设置 sticky 属性可以控制对齐方式,可用的值(N,S,E,W)及其组合值

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 工业设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号