当前位置:   article > 正文

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

python pack布局

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

1、place布局

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

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

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

 然后我们再来学习代码

  1. from tkinter import *
  2. root = Tk()
  3. root.title('登录')
  4. root.geometry('400x200')
  5. root.config(bg='#fffcc0')
  6. def ok1():
  7. print("这是OK1")
  8. def ok2():
  9. print("这是OK2")
  10. Label(root,text='用户名',width=6).place(x=1,y=1)
  11. Entry(root,width=20).place(x=45,y=1)
  12. Label(root,text='密码',width=6).place(x=1,y=20)
  13. Entry(root,width=20,show='*').place(x=45,y=20)
  14. Button(root,text='登录',width=8,command=ok1).place(x=40,y=40)
  15. Button(root,text='取消',width=8,command=ok2).place(x=110,y=40)
  16. 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’分别表示东西南北。

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

  1. from tkinter import *
  2. root=Tk()
  3. root.title('计算器示例----2021110201142庄乾坤')
  4. root.geometry("300x150+280+280")
  5. root.config(bg='#cc66ff')
  6. L1=Button(root,text='1',width=5,bg='yellow')
  7. L2=Button(root,text='2',width=5,bg='red')
  8. L3=Button(root,text='3',width=5,bg='blue')
  9. L4=Button(root,text='4',width=5,bg='blue')
  10. L5=Button(root,text='5',width=5,bg='green')
  11. L6=Button(root,text='6',width=5,bg='red')
  12. L7=Button(root,text='7',width=5,bg='green')
  13. L8=Button(root,text='8',width=5,bg='pink')
  14. L9=Button(root,text='9',width=5,bg='blue')
  15. L0=Button(root,text='0',width=5,bg='yellow')
  16. Lp=Button(root,text='.',bg='pink')
  17. L1.grid(row=0,column=0)
  18. L2.grid(row=0,column=1)
  19. L3.grid(row=0,column=2)
  20. L4.grid(row=1,column=0)
  21. L5.grid(row=1,column=1)
  22. L6.grid(row=1,column=2)
  23. L7.grid(row=2,column=0)
  24. L8.grid(row=2,column=1)
  25. L9.grid(row=2,column=2)
  26. L0.grid(row=3,column=0)
  27. Lp.grid(row=3,column=2)
  28. L1.grid(row=0,column=0,sticky=E+W)
  29. L2.grid(row=0,column=1,sticky=E+W)
  30. L3.grid(row=0,column=2,sticky=E+W)
  31. L4.grid(row=1,column=0,sticky=E+W)
  32. L5.grid(row=1,column=1,sticky=E+W)
  33. L6.grid(row=1,column=2,sticky=E+W)
  34. L7.grid(row=2,column=0,sticky=E+W)
  35. L8.grid(row=2,column=1,sticky=E+W)
  36. L9.grid(row=2,column=2,sticky=E+W)
  37. L0.grid(row=3,column=0,columnspan=2,sticky=E+W)
  38. Lp.grid(row=3,column=2,sticky=E+W)
  39. root.mainloop()

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

3、pack布局

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

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

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

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

  1. import tkinter
  2. root=tkinter.Tk()
  3. root.geometry('300x200+300+300')
  4. root.title('pack布局')
  5. root.config(bg='#ccff00')
  6. label=tkinter.Label(root,text='hello,python')
  7. label.pack()
  8. button1=tkinter.Button(root,text='BUTTON1')
  9. button1.pack(side=tkinter.LEFT)
  10. button2=tkinter.Button(root,text='BUTTON2')
  11. button2.pack(side=tkinter.RIGHT)
  12. root.mainloop()

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

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

 选项:left, right, top, bottom

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

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

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

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

看看视图:

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/724896
推荐阅读
相关标签
  

闽ICP备14008679号