python系列tkinter之pack布局、place布局和grid布局

tkinter以提供3种界面组件布局管理的方法,分别是:pack,grid,place接下来我们来介绍pack、place和grid。

1、place布局

我们介绍place布局,就做一个简易的账号,密码登录的界面。

首先我们要知道place和其他两种布局方式相比,更加"自由"但是需要做的事情也多。布局一般就是设置子控件相对于父控件的 起始位置、宽和高。在pack、grid的布局方式中,起始位置、宽和高都会给默认配置,所以使用起来会更"简",代价就是"控制权"减少。所以place虽然"繁",但完全自主控制。三种布局方式,没有哪种最好,哪种不好,看实际需要求选着合适的即可。

首先我们先看运行示例,试想一下如何实现。

 然后我们再来学习代码

from tkinter import *
root = Tk()
root.title('登录')
root.geometry('400x200')
root.config(bg='#fffcc0')

def ok1():
    print("这是OK1")

def ok2():
    print("这是OK2")
    
Label(root,text='用户名',width=6).place(x=1,y=1)
Entry(root,width=20).place(x=45,y=1)
Label(root,text='密码',width=6).place(x=1,y=20)
Entry(root,width=20,show='*').place(x=45,y=20)
Button(root,text='登录',width=8,command=ok1).place(x=40,y=40)
Button(root,text='取消',width=8,command=ok2).place(x=110,y=40)
root.mainloop()

x

指定 控件的在x轴的坐标值

y

指定 控件在y轴的坐标值

调整(x,y)改变button的起始位置

2、grid布局

grid从字面意思上可以推断,这种布局方式就像网格一样来分布控件。那么具体会呈现什么样的效果,要怎么编码控制呢。同样的套路,通过实例来进行直观的讲解

今天我们用计算器的一种示例图来讲解

column

指定控件所在的列

row

指定控件所在的行

columnspan

指定每个控件横跨的列数

sticky

sticky类似于pack的anchor,决定控件在cell中锚点,也就是控件在cell中的起始位置,可设置的值为’n’, ‘ne’, ‘e’, ‘se’, ‘s’, ‘sw’, ‘w’, ‘nw’; ‘e’、‘w’、‘s’、'n’分别表示东西南北。

首先我们学习了一些简单的设置之后,我们来看看代码,试着理解下。

from tkinter import *
root=Tk()
root.title('计算器示例----2021110201142庄乾坤')
root.geometry("300x150+280+280")
root.config(bg='#cc66ff')
L1=Button(root,text='1',width=5,bg='yellow')
L2=Button(root,text='2',width=5,bg='red')
L3=Button(root,text='3',width=5,bg='blue')
L4=Button(root,text='4',width=5,bg='blue')
L5=Button(root,text='5',width=5,bg='green')
L6=Button(root,text='6',width=5,bg='red')
L7=Button(root,text='7',width=5,bg='green')
L8=Button(root,text='8',width=5,bg='pink')
L9=Button(root,text='9',width=5,bg='blue')
L0=Button(root,text='0',width=5,bg='yellow')
Lp=Button(root,text='.',bg='pink')
L1.grid(row=0,column=0)
L2.grid(row=0,column=1)
L3.grid(row=0,column=2)
L4.grid(row=1,column=0)
L5.grid(row=1,column=1)
L6.grid(row=1,column=2)
L7.grid(row=2,column=0)
L8.grid(row=2,column=1)
L9.grid(row=2,column=2)
L0.grid(row=3,column=0)
Lp.grid(row=3,column=2)

L1.grid(row=0,column=0,sticky=E+W)
L2.grid(row=0,column=1,sticky=E+W)
L3.grid(row=0,column=2,sticky=E+W)
L4.grid(row=1,column=0,sticky=E+W)
L5.grid(row=1,column=1,sticky=E+W)
L6.grid(row=1,column=2,sticky=E+W)
L7.grid(row=2,column=0,sticky=E+W)
L8.grid(row=2,column=1,sticky=E+W)
L9.grid(row=2,column=2,sticky=E+W)
L0.grid(row=3,column=0,columnspan=2,sticky=E+W)
Lp.grid(row=3,column=2,sticky=E+W)

root.mainloop()

 接下来我们学习tkinter库中pack参数

3、pack布局

  编写一个程序的界面,就是要把各个组件,以适当大小,定位到界面的某个位置。

  tkinter以提供3种界面组件布局管理的方法,分别是:pack,grid,place 这篇文章先来讲解pack 方法。

  pack() 方法的参数有:side, fill, padx/pady, ipadx/ipady, anchor, expand

首先我们看代码,尝试理解。

import tkinter
root=tkinter.Tk()
root.geometry('300x200+300+300')
root.title('pack布局')
root.config(bg='#ccff00')

label=tkinter.Label(root,text='hello,python')
label.pack()
button1=tkinter.Button(root,text='BUTTON1')
button1.pack(side=tkinter.LEFT)
button2=tkinter.Button(root,text='BUTTON2')
button2.pack(side=tkinter.RIGHT)
root.mainloop()

内容比较简单就不一条条说明了,集中需要注意的就是side

side: 决定组件停靠的方向。

 选项:left, right, top, bottom

 la1.pack( side=’top’) # 向上停靠 默认

 la1.pack( side=’bottom) # 向下停靠

 la1.pack( side=’left’) # 向左停靠

 la1.pack( side=’right’) # 向右停靠

看看视图:

好了,大家理解了这些布局的用法了嘛。

  • 6
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python Tkinter中的place布局是一种基于绝对位置的布局方式,它允许您将小部件放置在窗口的任何位置。使用place布局,您可以指定小部件的x和y坐标,以及它们的宽度和高度。这种布局方式非常适合创建自定义的用户界面,但需要更多的手动调整和计算。 ### 回答2: TkinterPython中最常用的GUI工具包之一,它可以创建各种图形用户界面,包括按钮、菜单、文本框、标签等等。其中,Tkinter中有三种布局方式,即packgridplace布局place布局是最简单、最灵活的布局方式。它允许你自由地放置组件在窗口中的任何位置。通过place布局,可以通过指定组件的坐标和尺寸,自定义布局。详细来说,place布局采用以下语法: widget.place(options) 其中,widget为需要进行布局的组件,options为可选的选项。下面是常用的选项: - x和y:指定组件的坐标位置 - width和height:指定组件的宽度和高度 - anchor:指定组件在其位置内的位置 - bordermode:指定组件的边框模式 例如,下面是用place布局创建一个简单的窗口的例子: ``` Python import tkinter as tk root = tk.Tk() label = tk.Label(root, text="Hello, Tkinter!") label.place(x=50, y=50) root.mainloop() ``` 在上面的例子中,使用place布局创建了一个标签,这个标签的位置为(50, 50)。 需要注意的是,place布局容易导致组件之间的重叠和覆盖。因此,在使用place布局时,需要仔细地指定组件的位置和尺寸,以避免出现这种问题。 综上所述,place布局是一种非常灵活的布局方式,允许我们自由地布置组件。但是,需要注意组件之间的重叠和覆盖问题。在使用place布局时,需要精心指定组件的位置和尺寸,以实现理想的布局效果。 ### 回答3: Python tkinter是一个常用的GUI界面工具包,其中place布局是一种常用的定位布局方式。place布局适用于需要定位、对齐和调整控件位置的情况,可以通过具体的坐标值来指定控件位置。下面我将从以下几个方面详细介绍Python tkinter中的place布局。 1. 布局方法 place布局可以通过以下方法来指定控件位置: 1). x和y坐标值:通过指定控件的x和y坐标值来设置控件的位置,如widget.place(x=10, y=20)。 2). relx和rely坐标值:通过指定控件相对于父容器的相对坐标值来设置控件位置,如widget.place(relx=0.5, rely=0.5)。 3). anchor参数:用于指定控件的位置锚点,如widget.place(x=10, y=20, anchor="nw"),表示从控件的左上角开始布局。 2. 布局属性 place布局还可以通过以下属性来设置控件的布局和大小: 1). width和height属性:用于设置控件的宽度和高度,如widget.place(x=10, y=20, width=100, height=50)。 2). relwidth和relheight属性:用于设置控件相对于父容器的宽度和高度比例,如widget.place(relx=0.5, rely=0.5, relwidth=0.5, relheight=0.5)。 3). bordermode属性:用于指定控件的边框模式,有inside和outside两种,如widget.place(x=10, y=20, width=100, height=50, bordermode="outside")。 3. 注意事项 在使用place布局时,需要注意以下几个问题: 1). 控件的位置和大小需要根据父容器的大小进行调整,避免超出或空缺的问题。 2). 在布局时,需要注意控件之间的间距和重叠情况,避免影响视觉效果。 3). 当控件的位置和大小需要根据窗口大小自适应时,需要使用bind方法来绑定事件,通过event.width和event.height属性来动态调整控件位置和大小。 以上就是Python tkinter中的place布局的基本情况介绍,希望对大家的学习和使用有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值