Tkinter教程之Pack篇
更新时间:2024-04-07 20:07:01 阅读量: 综合文库 文档下载
'''Tkinter教程之Pack篇'''
#Pack为一布局管理器,可将它视为一个弹性的容器 '''1.一个空的widget''' #不使用pack
# -*- coding: cp936 -*- from Tkinter import * root = Tk()
# 查看当前root下的子组件,解释器没有报异常,说明Pack已创建,并可以使用,此时的输出为空,即root没有任何子组件。 print root.pack_slaves() # 向root中pack一个Label
Label(root,text = 'pack').pack() # 再次打印出root的子组件,可以看到已经包含一个组件,即刚才创建的Label,说明Label调用pack()是将自己加入到了root中。 print root.pack_slaves() root.mainloop()
# pack_salves打印当前组件包拥有的子组件,通过这个函数可以查看各个组件是否有包含关系。
'''2.root与Pack的关系''' # -*- coding: cp936 -*- # 使用文字create_text from Tkinter import * root = Tk()
# 改变root的大小为80x80 root.geometry('80x80+0+0') print root.pack_slaves()
Label(root,text = 'pack').pack() print root.pack_slaves() root.mainloop()
#可以看出Pack的结果没有什么变化,它不对root产生影响,也就是说Pack可以“缩小”至只包含一个Label组件,root可以自己控件自己的大小。 '''3.向Pack中添加多个组件''' # -*- coding: cp936 -*- # 向Pack中添加多个Label from Tkinter import * root = Tk()
# 改变root的大小为80x80 root.geometry('80x80+0+0') print root.pack_slaves() for i in range(5):
Label(root,text = 'pack' + str(i)).pack() print root.pack_slaves() root.mainloop()
# 使用用默认的设置pack将向下添加组件,第一个在最上方,然后是依次向下
排列。注意最后一个Label的显示不完全,稍后解释原因 '''4.固定设置到自由变化'''
# 上例中看到label4没有显示完全 # -*- coding: cp936 -*-
# 不设置root的大小,使用默认 from Tkinter import * root = Tk()
#去掉下面的这句
#root.geometry('80x80+0+0') print root.pack_slaves() for i in range(5):
Label(root,text = 'pack' + str(i)).pack() print root.pack_slaves() root.mainloop()
#使用用默认的设置pack将向下添加组件,第一个在最上方,然后是依次向下排列。这样的话最后一个已经显示出来的,这就是为什么称Pack为弹性的容器的原因了,虽然有这个特性,但它并不是总是能够按照我们的意思进行布局,我们可以强制设置容器的大小,以覆盖Pack的默认设置。Pack的优先级低。 '''5.fill如何控制子组件的布局''' # -*- coding: cp936 -*-
# 不设置root的大小,使用默认 from Tkinter import * root = Tk()
# 改变root的大小为80x80 root.geometry('80x80+0+0') print root.pack_slaves()
# 创建三个Label分别使用不同的fill属性
Label(root,text = 'pack1',bg = 'red').pack(fill = Y)
Label(root,text = 'pack2',bg = 'blue').pack(fill = BOTH) Label(root,text = 'pack3',bg = 'green').pack(fill = X) print root.pack_slaves() root.mainloop()
#第一个只保证在Y方向填充,第二个保证在XY两个方向上填充,第三个不使用填充属性,注意Pack只会吝啬地给出可以容纳这三个组件的最小区域,它不允许使用剩余的空间了,故下方留有“空白”。 '''6.expand如何控制组件的布局''' # -*- coding: cp936 -*-
# 这个属性指定如何使用额外的空间,即上例中留下来的“空白” from Tkinter import * root = Tk()
# 改变root的大小为80x80 root.geometry('80x80+0+0') print root.pack_slaves()
# 创建三个Label分别使用不同的fill属性
Label(root,text = 'pack1',bg = 'red').pack(fill = Y,expand = 1)
Label(root,text = 'pack2',bg = 'blue').pack(fill = BOTH,expand = 1) Label(root,text = 'pack3',bg = 'green').pack(fill = X,expand = 0) print root.pack_slaves() root.mainloop()
# 第一个只保证在Y方向填充,第二个保证在XY两个方向上填充,第三个不使用填充属性,这个例子中第一个Label和第二个Label使用了expand = 1属性,而第三个使用expand = 0属性,改变root的大小,可以看到Label1和Label2是随着root的大小变化而变化(严格地它的可用空间在变化),第三个只中使用fill进行X方向上的填充,不使用额外的空间。 '''7.改变组件的排放位置''' # 使用side属性改变放置位置 # -*- coding: cp936 -*- from Tkinter import * root = Tk()
# 改变root的大小为80x80 root.geometry('80x80+0+0') print root.pack_slaves()
# 创建三个Label分别使用不同的fill属性,改为水平放置 # 将第一个Label居左放置 Label(root,text = 'pack1',bg = 'red').pack(fill = Y,expand = 1,side = LEFT) # 将第二个Label居右放置
Label(root,text = 'pack2',bg = 'blue').pack(fill = BOTH,expand = 1,side = RIGHT)
# 将第三个Label居左放置,靠Label放置,注意它不会放到Label1的左边 Label(root,text = 'pack3',bg = 'green').pack(fill = X,expand = 0,side = LEFT)
print root.pack_slaves() root.mainloop()
# 第一个只保证在Y方向填充,第二个保证在XY两个方向上填充,第三个不使用填充属性,这个例子中第一个Label和第二个Label使用了expand = 1属性,而第三个使用expand = 0属性,改变root的大小,可以看到Label1和Label2是随着root的大小变化而变化(严格地它的可用空间在变化),第三个只中使用fill进行X方向上的填充,不使用额外的空间。 '''8.设置组件之间的间隙大小''' # ipadx设置内部间隙 # padx设置外部间隙
# -*- coding: cp936 -*-
# 不设置root的大小,使用默认 from Tkinter import * root = Tk()
# 改变root的大小为80x80 # root.geometry('80x80+0+0') print root.pack_slaves()
# 创建三个Label分别使用不同的fill属性,改为水平放置 # 将第一个LabelFrame居左放置
L1 = LabelFrame(root,text = 'pack1',bg = 'red') # 设置ipadx属性为20
L1.pack(side = LEFT,ipadx = 20) Label(L1,
text = 'inside', bg = 'blue'
).pack(expand = 1,side = LEFT) L2 = Label(root,
text = 'pack2', bg = 'blue'
).pack(fill = BOTH,expand = 1,side = LEFT,padx = 10) L3 = Label(root,
text = 'pack3', bg = 'green'
).pack(fill = X,expand = 0,side = LEFT,pady = 10) print root.pack_slaves() root.mainloop()
#为了演示ipadx/padx,创建了一个LabelFrame设置它的ipadx为20,即内部间隔值为20,它的子组件若使用则会留出20个单位;Label2和Label3分别设置x和y方向上的外部间隔值,所有与之排列的组件会与之保留10个单位值的距离
正在阅读:
Tkinter教程之Pack篇04-07
工程项目施工过程中的成本控制措施优化05-17
国家在有关危旧房改造中安置房政策05-21
反映社会现实的话02-10
查勘员实习周记05-01
幼儿园区域活动中存在的问题及对策12-21
Vmware常见故障处理11-04
观察仙人掌作文400字06-15
自然博物馆观后感10012-11
抵押核保书范本03-19
- 2009中西部家居博览会总体策划
- 2009 Revit 1级工程师学生用
- 天津地铁建设工程试验检测机构管理办法(TJDT-ZY-AQ-29)
- 新四年级数学暑期班第七次教案
- 机械制造企业隐患排查治理检查表 - 图文
- 2008届全国百套高考数学模拟试题分类汇编-103概率与统计解答题 -
- 职场健身防病试题及答案
- Excel操作技巧大全II - --数据输入和编辑技巧
- 南开大学2018春季《行政管理学》离线作业考核答案
- 2015年医师定考简易程序试卷及答案
- 新《预算法》对行政事业单位预算管理的挑战解读
- 轴的课件
- 电动汽车充电桩设计 毕业论文
- 必修2、选修2-1、1-1期末模拟试题2
- 桌面远程运维管理系统实施-可行性研究报告120306
- 西气东输水土保持工程工作总结 - 图文
- 正宁县基本县情及经济社会发展情况简介
- SATWE参数设置(巨详细)
- 儒家法思想研究综述
- 生活家政服务电子商务平台建设运营整合方案书【审报完稿】
- Tkinter
- 教程
- Pack
- 食品安全经营承诺书
- 中央企业工资集体协商项目建设可行性研究报告2018年修订版
- 全市移动测速地点 - 图文
- 纳米材料在化工生产中的应用-李馥星
- 省课题:基于核心素养的教材与课程开发研究 - 图文
- 络合滴定练习题2015
- 2018年四年级语文下册期中考试卷及答案新人教版
- 最后一课实录几点评
- 丝氨酸蛋白酶的相关研究
- 数学发展简史
- 数学八年级下册第一章三角形的证明测试题
- 小学美术教师专业知识考试模拟试卷
- 连锁超市物流中英文对照外文翻译文献
- 城轨行车课程设计资料
- 马克思主义哲学大众化的历史经验及其启示
- 我自信 我最棒主题班会方案
- 2010年高考数学备考最新6套压轴题(含详细答案)
- 大学计算机第6版习题汇总1-8章20141125(15秋)
- 高考英语作文富有文采的状语从句
- SQL Server数据库应用技术操作题题库