打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python 布局管理器pack、 grid、 place

一、概述
…一个 GUI 应用程序必然有大量的组件,这些组件如何排布? 这时候,就需要使用 tkinter提供的布局管理器帮助我们组织、 管理在父组件中子组件的布局方式。 tkinter 提供了三种管理器: pack、 grid、 place。
二、grid 布局管理器
grid 表格布局, 采用表格结构组织组件。 子组件的位置由行和列的单元格来确定, 并且可以跨行和跨列, 从而实现复杂的布局。


示例

from tkinter import *from tkinter import messageboximport randomclass Application(Frame):def __init__(self, master=None):super().__init__(master) # super()代表的是父类的定义, 而不是父类对象self.master = masterself.pack()self.createWidget()def createWidget(self):"""通过 grid 布局实现登录界面"""self.label01 = Label(self,text="用户名")self.label01.grid(row=0,column=0)self.entry01 = Entry(self)self.entry01.grid(row=0,column=1)Label(self,text="用户名为手机号").grid(row=0,column=2)Label(self, text="密码").grid(row=1, column=0)Entry(self, show="*").grid(row=1, column=1)Button(self, text="登录").grid(row=2, column=1, sticky=EW)Button(self, text="取消").grid(row=2, column=2, sticky=E)if __name__ == '__main__':root = Tk()root.geometry("400x90+200+300")app = Application(master=root)root.mainloop()

运行结果


三、pack 布局管理器
pack 按照组件的创建顺序将子组件添加到父组件中, 按照垂直或者水平的方向自然排布。 如果不指定任何选项, 默认在父组件中自顶向下垂直添加组件。
pack 是代码量最少, 最简单的一种, 可以用于快速生成界面。


【小灰灰建议】 如上列出了 pack 布局所有的属性, 但是不需要挨个熟悉, 了解基本的即可。pack 适用于简单的垂直或水平排布, 如果需要复杂的布局可以使用 grid 或 place。
【示例】 pack 布局用法, 制作钢琴按键布局

#coding=utf-8from tkinter import *root = Tk();root.geometry("700x220")#Frame 是一个矩形区域, 就是用来防止其他子组件f1 = Frame(root)f1.pack()f2 = Frame(root);f2.pack()btnText = ("流行风","中国风","日本风","重金属","轻音乐")for txt in btnText:Button(f1,text=txt).pack(side="left",padx="10")for i in range(1,20):Button(f2,width=5,height=10,bg="black" if i%2==0 else"white").pack(side="left")root.mainloop()

四、place 布局管理器
place 布局管理器可以通过坐标精确控制组件的位置, 适用于一些布局更加灵活的场景。



示例

#coding=utf-8from tkinter import *root = Tk();root.geometry("500x300")root.title("布局管理 place");root["bg"]="white"f1 = Frame(root,width=200,height=200,bg="green")f1.place(x=30,y=30)Button(root,text="小灰灰").place(relx=0.5,rely=0,x=100,y=200,relwidth=0.2,relheight=0.2)Button(f1,text="小灰灰牛逼").place(relx=0.6,rely=0.7)Button(f1,text="小灰灰真牛逼").place(relx=0.2,rely=0.2)root.mainloop()
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Tkinter教程
Python Tkinter 窗口的管理与设置(四):布局管理器
Tkinter 的三大布局管理器 pack、grid 和 place用法汇总
python中的图形界面设计(一)
Python GUI之tkinter布局管理
Python|GUI编程中组件的布局
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服