更多课程 选择中心


Python培训

400-111-8989

Python tkinter编程的pack布局方式


GUI编程就相当于小孩子搭积木,每个积木块应该放在哪里?每个积木块显示为多大?也就是这些大小和位置都需要进行管理,而布局管理器正是负责管理各组件的大小和位置,此外,当用户调整了窗口的大小之后,布局管理器还会自动调整窗口中各组件的大小和位置。

如果使用Pack布局,意味着当程序向容器中添加组件时,这些组件会依次向后排列,排列方向既可是水平排列,也可是垂直排列。下面程序简单示范了Pack布局的用法,该程序向窗口中添加了3个Label组件,程序如下:

# Python 2.x使用这行

#from Tkinter import *

# Python 3.x使用这行

from tkinter import *

# 创建窗口并设置窗口标题

root = Tk()

# 设置窗口标题

root.title('Pack布局')

for i in range(3):

lab = Label(root, text="第%d个Label" % (i + 1), bg='#eeeeee')

# 调用pack进行布局

lab.pack()

# 启动主窗口的消息循环

root.mainloop()

上面程序创建了一个窗口,然后使用循环创建了3个Label,并对3个Label使用了pack()方法进行默认的Pack布局。运行该程序,可看到如图所示的界面:

pack布局

上图使用的是默认的Pack布局,实际上程序在调用pack()方法时同样可传入多个选项,例如通过help(tkinter.Label.pack)命令来查看pack()方法支持的选项可看到如下输出:

>>> help(tkinter.Label.pack)

Help on function pack_configure in module tkinter:

pack_configure(self, cnf={}, **kw)

Pack a widget in the parent widget. Use as options:

after=widget - pack it after you have packed widget

anchor=NSEW (or subset) - position widget according to

given direction

before=widget - pack it before you will pack widget

expand=bool - expand widget if parent size grows

fill=NONE or X or Y or BOTH - fill widget if widget grows

in=master - use master to contain this widget

in_=master - see 'in' option description

ipadx=amount - add internal padding in x direction

ipady=amount - add internal padding in y direction

padx=amount - add padding in x direction

pady=amount - add padding in y direction

side=TOP or BOTTOM or LEFT or RIGHT - where to add this widget.

上面显示可以看出,其实pack()方法通常可支持如下选项:

anchor:当可用空间大于组件的需求的大小时,该选项决定组件被放置于容器的何处,该选项支持N(北代表上)、E(东代表右)、S(南代表下)、W(西代表左)、NW(西北代表左上)、NE(东北代表右上)、SW(西南代表左下)、SE(东南代表右下)、CENTER(中、默认值为CENTER)这些值。

expand:该bool值指定当父容器增大时是否拉伸该组件。

fill:设置组件是否沿水平或垂直方向填充,该选项支持NONE、X、Y或BOTH四个值,其中NONE表示不填充,BOTH表示沿着两个方向填充。

ipadx:指定该组件在x方向(水平)上的内部留白(padding)。

ipady:指定该组件在y方向(水平)上的内部留白(padding)。

padx:指定该组件在x方向(水平)与其他组件的间距。

pady:指定该组件在y方向(水平)与其他组件的间距。

side:设置该组件的添加位置,可设置为TOP、BOTTOM、LEFT或RIGHT这四个值的其中之一。

当程序前面比较复杂时,程序就需要使用多个容器(Frame)进行分开布局,然后再将Frame添加到窗口中。例如如下程序:

通过上面不难发现,Pack布局其实还是非常灵活的,它完全可以实现很复杂的用户界面,因为这里有一个界面分解的常识需要说明:无论看上去多么复杂、古怪的界面,其实大多可分解为水平排列和垂直排列,而Pack布局即可实现水平排列,也可是实现垂直排列,然后再通过多个容器进行组合,这样就可以开发出更复杂的界面了。

对于打算使用Pack布局的开发者来说,首先要做的事情是将程序界面进行分解,分解成水平排列的容器和垂直排列的容器——有时候甚至要容器嵌套容器,然后使用多个Pack布局的容器将它们组合在一起。

版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Python中的Matplotlib绘图是什麽意思?
下一篇:快速掌握Python爬虫XPath语法

如何自学Python?

说一说python中的几个基础语法

为什么Python类语法应该不同?

0基础入门Python,3 个常识点必须先了解!

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省