Python零基础入门三十二之Tkinter布局管理器

这篇博客主要是总结一下Tkinter中的布局管理器的用法。
Tkinter中的布局管理器
1.pack:按照添加的顺序排列组件,默认将添加的组件依次纵向排列
2.grid:按照行/列形式排列组件
3.place:允许程序员指定组件的大小和位置
注意:不要在同一个父组件中混合使用pack和grid因为Tkinter会很认真地在那儿计算到底先使用哪个布局管理器,以至于你等了半个多小时,Tkinter还是在那儿纠结不出结果

1.pack布局管理器

from tkinter import *

root = Tk()

listbox = Listbox(root)
#fill选项告诉窗口管理器该组件将填充
#整个分配给他的空间,BOTH表示同时横向和
#纵向拓展,X表示横向,Y表示纵向
#expand选项是告诉窗管理器将父组件的额外
#空间也填满

listbox.pack(fill=BOTH,expand=True)

for i in range(10):
     listbox.insert(END,i)
mainloop()

如果想要组件横向挨个儿排列,可以使用side选项

Label(root,text='red').pack(side=LEFT)

2.grid布局管理器
默认情况下组件会居中显示在对应的网格里,可以使用sticky选项来修改这一特性,该选项可以使用的值有E、W、S、N

from tkinter import *

root = Tk()

Label(root,text='用户名').grid(row=0,sticky=W)
Label(root,text='密码').grid(row=1,sticky=W)

Entry(root).grid(row=0,column=1)
Entry(root,show='*').grid(row=1,column=1)

mainloop()

实现跨行跨列来显示控件
使用rowspan和columnspan便可以实现

from tkinter import *

root = Tk()
photo = PhotoImage(file='photo.gif')
#这样便可以实现跨一二两行来放置label控件
Label(root,image=photo).grid(row=0,column=2,rowspan=2)
Label(root,text='用户名').grid(row=0,sticky=W)
Label(root,text='密码').grid(row=1,sticky=W)

Entry(root).grid(row=0,column=1)
Entry(root,show='*').grid(row=1,column=1)

mainloop()

使用跨行跨列功能前后对比:

这里写图片描述

这里写图片描述

3.place布局管理器

通常情况下不建议使用place布局管理器,因为对比起pack和grid,place要做更多的工作不过在一些特殊的情况下可以发挥妙用。

例如,我们可以使用place将子组件显示在父组件的正中央

from tkinter import *

root = Tk()

def callback():
     print("正中靶心")
#其中relx表示子组件相对于父组件的位置,0表示最左边
#1表示最右边,0.5表示中间位置
#其中rely表示子组件相对于父组件的位置,0表示最上边
#1表示最下边,0.5表示中间位置
Button(root,text='点我',\
       command=callback).place(relx=0.5,rely=0.5,anchor=CENTER)
mainloop()

关于Tkinter中的布局管理器就先介绍到这里,之后会继续补充

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PythonTkinter模块是一个用于创建图形用户界面(GUI)的工具包。它提供了一组用于创建窗口、标签、按钮、文本框等GUI组件的类和方法。 在Tkinter中,布局管理器是用于定义和控制GUI组件在窗口中的位置和大小的机制。Tkinter提供了三种主要的布局管理器:Pack、Grid和Place。 1. Pack布局管理器: Pack布局管理器将组件按照添加的顺序自动排列。它会自动根据窗口的大小调整组件的位置。例如,使用`pack()`方法将组件添加到窗口中: ```python from tkinter import Tk, Button root = Tk() button1 = Button(root, text="Button 1") button1.pack() button2 = Button(root, text="Button 2") button2.pack() root.mainloop() ``` 2. Grid布局管理器: Grid布局管理器将组件按照行和列的方式排列在一个网格中。可以使用`grid()`方法指定组件所在的行和列。例如: ```python from tkinter import Tk, Button root = Tk() button1 = Button(root, text="Button 1") button1.grid(row=0, column=0) button2 = Button(root, text="Button 2") button2.grid(row=0, column=1) root.mainloop() ``` 3. Place布局管理器: Place布局管理器允许你手动指定组件的位置和大小。可以使用`place()`方法来设置组件的坐标和大小。例如: ```python from tkinter import Tk, Button root = Tk() button1 = Button(root, text="Button 1") button1.place(x=50, y=50) button2 = Button(root, text="Button 2") button2.place(x=100, y=100) root.mainloop() ``` 这只是Tkinter布局的基本介绍,你可以根据自己的需求选择适合的布局管理器来创建GUI。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值