【tkinter学习笔记 - 5】:布局管理器(grid、pack、place)

简介: 【tkinter学习笔记 - 5】:布局管理器(grid、pack、place)

一、grid布局管理器


一个GUI应用程序必然有大量的组件,这些组件如何排布?这时候就需要使用tkinter提供的布局管理器帮助我们组织,管理再父组件中子组件的布局方式,tkinter提供了三种管理器:pack、grid、place



grid表格布局,采用表格结构组织组件,子组件的位置由行和列的单元格确定,并且可以跨行和跨列,从而实现复杂的布局。





grid()方法提供的选项

image.png



代码演示


from tkinter import *
import tkinter as tk
class Application(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self,master)
        self.master = master
        self.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, stick=EW)
        Button(self, text='取消').grid(row=2, column=2, stick=E)
if __name__ == '__main__':
    root = Tk()
    root.geometry('300x100+200+300')
    root.title('登录系统')
    app = Application(root)
    root.mainloop()


运行结果

4520b65bb96a46c79b7981e0178bc4c2.png



通过grid布局-实现计算器软件界面


from tkinter import *
import tkinter as tk
class Application(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.master = master
        self.pack()
        self.createWidget()
    def createWidget(self):
        '''通过grid布局实现计算器的界面'''
        btnText = (('MC', 'M+','M-','MR'),
                   ('C', '±', '÷', '×'),
                   (7, 8, 9, '-'),
                   (4, 5, 6, '+'),
                   (1, 2, 3, '='),
                   (0, '.'),
                   )
        Entry(self).grid(row=0, column=0, columnspan=4, pady=10)
        for rindex,r in enumerate(btnText):
            for cindex,c in enumerate(r):
                if c == '=':
                    Button(self, text=c, width=2).grid(row=rindex + 1, column=cindex, rowspan=2, sticky=NSEW)
                elif c == 0:
                    Button(self, text=c, width=2).grid(row=rindex + 1, column=cindex, columnspan=2, sticky=NSEW)
                elif c == '.':
                    Button(self, text=c, width=2).grid(row=rindex + 1, column=cindex+1, rowspan=2, sticky=NSEW)
                else:
                    Button(self, text=c, width=2).grid(row=rindex+1, column=cindex, sticky=NSEW)
if __name__ == '__main__':
    root = Tk()
    root.title('计算器界面')
    root.geometry('200x230+200+300')
    app = Application(root)
    root.mainloop()


运行结果

c343de5c057a4994af47fba2c1c6078e.png




二、pack布局管理器


pack按照组件的创建顺序将子组件添加到父组件中,按照垂直或者水平的方向自然排布,如果不指定任何选项,默认在父组件中自顶向下垂直添加组件。


pack是代码量最少,最简单的一种,可以用于快速生成界面。



pack()方法提供的几个重要选项


image.png


pack布局--制作钢琴按钮

from tkinter import *
root = Tk()
root.geometry('700x220')
root.title('钢琴按键')
# 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,13):
    Button(f2, width=5, height=10, borderwidth=1, relief='solid',
          bg='black' if i%2==0 else 'white').pack(side='left', padx=2)
root.mainloop()



运行结果

1e0247d78d9f4d618906de341b9a27c1.png




三、place布局管理器


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



place()方法的选项


image.png




相关文章
|
3月前
|
数据采集 JSON 监控
Python高效工作必备:20个实用脚本推荐!
Python是提升效率的终极自动化利器!本文精选20个实用脚本,覆盖文件批量处理、数据清洗转换、网络爬取、邮件通知、系统监控等高频场景,每项均附完整代码,可直接复制使用。无需深厚编程基础,用几行代码就能节省数小时手动操作,让你的工作流全面自动化,轻松成为高效能人士!
|
存储 SQL NoSQL
MongoDB 6.0 新特性概览
正如发布MongoDB 5.0时承诺的更快发布频率,年度大版本MongoDB 6.0也于2022年正式跟广大数据库爱好者们见面了。目前阿里云MongoDB已经完成了对6.0版本的适配工作,大家可以直接在官网控制台进行购买和尝鲜体验!
MongoDB 6.0 新特性概览
DataFrame(6):DataFrame的增、删、改、查(二)
DataFrame(6):DataFrame的增、删、改、查(二)
DataFrame(6):DataFrame的增、删、改、查(二)
|
JSON 数据可视化 数据挖掘
python数据可视化开发(2):pandas读取Excel的数据格式处理(数据读取、指定列数据、DataFrame转json、数学运算、透视表运算输出)
python数据可视化开发(2):pandas读取Excel的数据格式处理(数据读取、指定列数据、DataFrame转json、数学运算、透视表运算输出)
715 0
|
数据库连接 数据库 索引
Python教程:一文了解Python的异常处理知识
在编程中,异常(exception)是指在程序执行过程中出现的错误或意外情况。当发生异常时,程序会中断执行,并将控制权转移到异常处理代码,以便对异常进行捕获和处理。
530 3
【C#】C#读写Excel文件
【C#】C#读写Excel文件
461 1
|
传感器 XML 编解码
GIGE 协议摘录 —— GVSP 协议(三)(中)
GIGE 协议摘录 —— GVSP 协议(三)
651 1
|
数据可视化 数据挖掘 API
Python数据分析:数据可视化(Matplotlib、Seaborn)
数据可视化是数据分析中不可或缺的一部分,通过将数据以图形的方式展示出来,可以更直观地理解数据的分布和趋势。在Python中,Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法,并附上一个综合详细的例子。
|
存储
GIGE 协议摘录 —— GVSP 协议(三)(下)
GIGE 协议摘录 —— GVSP 协议(三)
767 1
|
JavaScript API 网络架构
vue 动态路由使用
【8月更文挑战第30天】vue 动态路由使用
241 0