本文转载自:http://blog.csdn.net/jcodeer/article/details/1813196

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

lb1.grid()
lb2.grid()

root.mainloop()
# grid有两个最为重要的参数,用来指定将组件放置到什么位置,一个是row,另一个是column。如果不指定row,会将组件放置到第一个可用的行上,如果不指定column,则使用第一列。
'''2.使用row和column来指定位置'''
# -*- coding: cp936 -*-
# 使用grid来布局组件
from Tkinter import *
root = Tk()
# 创建两个Label
lb1 = Label(root,text = 'Hello')
lb2 = Label(root,text = 'Grid')

lb1.grid()
# 指定lb2为第一行(使用索引0开始),第二列(使用索引0开始)
lb2.grid(row = 0,column = 1)

root.mainloop()
# grid有两个最为重要的参数,用来指定将组件放置到什么位置,一个是row,另一个是column。如果不指定row,会将组件放置到第一个可用的行上,如果不指定column,则使用第一列。注意这里使用grid时不需要创建,直接使用行列就可以。
'''3.为其它组件预定位置'''
# 可以使用row/column来指定组件的放置位置,并预先留出空间,以务其它需要。
# -*- coding: cp936 -*-
# 使用grid来布局组件
from Tkinter import *
root = Tk()
# 创建两个Label
Label(root,text = 'Hello').pack()
# 在第一行,第10列放置lb2
Label(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 Tkinter import *
root = Tk()
# 创建两个Label
Label(root,text = '1').grid()
# 在第1行,第11列放置lb2
Label(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 -*-
# 多个组件同时grid到同一个表格位置
from Tkinter import *
root = Tk()
# 创建两个Label
lb1 = 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中移除(并未删除,可以使用grid再将它显示出来)
    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将这个删除从grid中移除,可以看到lb1显示出来了。
'''6.改变列(行)的属性值'''
# -*- coding: cp936 -*-
# 设置column的属性(columnconfigure)
from Tkinter import *
root = Tk()
# 创建两个Label
lb1 = 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 = 1)

# 指定列的最小宽度为100
root.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占用(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,column = 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()
# 创建两个Label
Label(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)及其组合值

转载于:https://www.cnblogs.com/LeeZz/p/3984344.html

Tkinter教程之Grid篇相关推荐

  1. Tkinter教程之Scrollbar篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811319 '''Tkinter教程之Scrollbar篇''' #Scrollbar(滚动条 ...

  2. Tkinter教程之Message篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811326 '''Tkinter教程之Message篇''' #Message也是用来显示文本 ...

  3. 转:Tkinter教程之Text(2)篇

    '''Tkinter教程之Text(2)篇''' '''6.使用tag来指定文本的属性''' #创建一个指定背景颜色的TAG # -*- coding: cp936 -*- from Tkinter  ...

  4. java jni helloword_JNI入门教程之HelloWorld篇

    JNI入门教程之HelloWorld篇 来源:互联网  宽屏版  评论 2008-05-31 09:07:11 本文讲述如何使用JNI技术实现HelloWorld,目的是让读者熟悉JNI的机制并编写第 ...

  5. DNS域欺骗攻击详细教程之Windows篇

    一.DNS域欺骗攻击原理 DNS欺骗即域名信息欺骗是最常见的DNS安全问题.当一个DNS服务器掉入陷阱,使用了来自一个恶意DNS服务器的错误信息,那么该DNS服务器就被欺骗了.DNS欺骗会使那些易受攻 ...

  6. 网管培训教程之DOS篇

    网管培训教程之DOS篇(一) 2007年08月12日 星期日 14:11 我们现在已经习惯了使用Windows系列的操作系统,似乎早已经脱离了DOS这套古老的操作系统.对于我们网管来说,我们在网吧的日 ...

  7. word计算机二级视频教程,计算机二级Office入门及上机实践视频教程之Word篇

    第一篇计算机应用基础6 第1章  计算机基础知识6 1.1  概述6 1.1.1计算机的发展6 1.1.2计算机的特点.用途和分类6 1.1.3计算科学研究与应用7 1.1.4未来计算机的发展趋势7 ...

  8. Python安装教程之anaconda篇

    [导读]我们知道,Python的功能非常强大.那么对于迫切想学习Python的新手同学来说,第一件事情可能需要了解python是什么?能用来做什么?语法结构是怎样的?这些我们几句话很难介绍清楚,后续会 ...

  9. Tkinter 教程之10个经典程序代码 数字时钟(教程含源码)

    Tkinter 是 Python 编程语言中最好的模块之一.它专门用于创建图形用户界面.有了这个模块,我们可以创建一些很棒的程序.在本文中,我们尝试创建一个简单而有趣的程序.我们将特别关注简单的 GU ...

最新文章

  1. python用什么运行环境_使用SAE部署Python运行环境的教程
  2. mapreduce框架详解
  3. python开发是不是苦累_Python 2.7 辛苦了,你好Python 3.7
  4. (双指针、二分Binary Search) leetcode 658. Find K closest Elements
  5. jert oracle 统计说明,Oracle JET简单入门(一)Oracle JET介绍
  6. spark shell中编写WordCount程序
  7. android中影藏状态栏和标题栏的几种方法
  8. python中列表和集合的区别_python中列表和集合有什么区别
  9. 大话数据结构 -07-1 图的定义、抽象数据类型与存储结构
  10. easyui datagrid加载本地数据和网络数据
  11. HDOJ水题集合6:杂题
  12. Java面向对象:对象的概念及面向对象的三个基本特征
  13. M3U8视频下载为mp4
  14. 微信小程序自定义icon
  15. PCL入门系列 —— 加载obj格式mesh模型、点云数据并作纹理模型TextureMesh可视化
  16. pl/sqp常用方法
  17. “基本系统设备”及“性能计数器”驱动无法安装问题解决
  18. Java基础(二)集合
  19. 锤子手机T1发布:售价3000元起 7月初上市
  20. 简单介绍下微信群大全500人大群及免费微信互投群万人群

热门文章

  1. 名企到访|南京汇智动力共建教学资源,推进校企项目IT人才实训!
  2. 微信小程序开发之路(十三)正式开工--设计ER图与数据库的创建
  3. c 爬虫怎么去掉html,爬虫数据清洗之html标签的清洗
  4. 【思科设备命令最全合集,快快收藏!】
  5. Pandas+Pyecharts | 全国吃穿住行消费排行榜,最‘抠门’的地区居然是北京!!!
  6. 关于C语言中的科学计数法问题。
  7. WPF自定义控件(教程含源码)-圆形进度条、环形进度条
  8. 毫米波雷达,智能照明+人体存在感应
  9. GSEA基因基富集分析
  10. c开源hash项目 uthash的用法总结