• tkinter学习-布局管理器


    阅读目录

    • pack 是按照添加顺序排列的组件
    • grid  是按照行/列形式排序的组件
    • place 允许程序员指定组件的大小和位置

    pack:

      说明:适用于少量的简单的组件的排列

      fill:这个选项是告诉窗口管理器该组件将填充整个分配给它的空间,BOTH表示同时横向和纵向扩展,X表示横向,Y表示纵向

    from tkinter  import  *
    root = Tk()
    Label(root,text='1',bg='green').pack(fill=X)
    Label(root,text='2',bg='red').pack(fill=X)
    Label(root,text='3',bg='yellow').pack(fill=X)
    Label(root,text='4',bg='blue').pack(fill=X)
    mainloop()

    结果:

        

      side:这个选项是告诉窗口该组件的位置,同时有四个值

    from tkinter import *
    root = Tk()
    Label(root,text='1',bg='green').pack(side=LEFT)
    Label(root,text='2',bg='red').pack(side=TOP)
    Label(root,text='3',bg='yellow').pack(side=BOTTOM)
    Label(root,text='4',bg='blue').pack(side=RIGHT)
    mainloop()

    结果:

        

    grid:

      说明:只需告诉他你想要将组件放置的位置(行/列,row指定行,cloumn指定列)

    from tkinter import *
    root = Tk()
    Label(root,text='用户名').grid(row=0)
    Label(root,text='密码').grid(row=1)
    Entry(root).grid(row=0,column=1)
    Entry(root,show='*').grid(row=1,column=1)
    mainloop()

    结果:

              

      默认的情况下组件会居中的显示在网格中,可以用sticky选项修改这个特征,值为 E,W,S,N(东西南北)

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

      想要用几个网格放置一个组件,只需指定rowspan(跨行)和columnspan(跨列)即可

    from tkinter import *
    root = Tk()
    Label(root,text='用户名').grid(row=0,sticky=W)
    Label(root,text='密码').grid(row=1,sticky=W)
    photo = PhotoImage(file='3.gif')
    Label(root,image=photo).grid(row=0,column=2,rowspan=2)
    Entry(root).grid(row=0,column=1)
    Entry(root,show='*').grid(row=1,column=1)
    Button(root,text='提交',width=10).grid(row=2,columnspan=3,pady=5,padx=10)
    mainloop()

    结果:

        

    place:

      说明:这个布局管理器可以让你使你的组件放到任何你想放到的地方,x,y是对应的坐标,anchor是那个方位对应这个坐标,值为 E,W,S,N(东西南北)

    from tkinter import *
    root = Tk()
    root.title('山丘')
    root.geometry('450x400')
    Label(root,text='用户名:').place(x=100,y=170)
    Label(root,text='密码:').place(x=100,y=230)
    photo = PhotoImage(file='welcome.gif')
    Label(root,image=photo).place(x=0,y=0)
    Entry(root).place(x=190,y=170)
    Entry(root,show='*').place(x=190,y=230)
    Button(root,text='提交',width=10).place(x=170,y=300)
    mainloop()

    结果:

          

      若让一个组件覆盖另一个组件,place()也可以帮你实现

    from tkinter import *
    root = Tk()
    def show():
        pass
    photo = PhotoImage(file='8.gif')
    Label(root,image=photo).pack()
    Button(root,text='点我',command=show).place(x=10,y=10)
    mainloop()

    结果:

        

    参考文献:

        小甲鱼的python教学视频

  • 相关阅读:
    边缘引导插值/方向卷积插值
    cout显示Mat类对象报错Access Violation
    图像特征点匹配C代码
    TF-IDF(词频-逆向文件频率)用于文字分类
    Jsp中如何通过Jsp调用Java类中的方法
    根据wsdl文件,soupUI生成webservice客户端代码
    根据wsdl,axis2工具生成客户端代码
    根据wsdl,apache cxf的wsdl2java工具生成客户端、服务端代码
    根据wsdl,基于wsimport生成代码的客户端
    Mysql截取和拆分字符串函数用法
  • 原文地址:https://www.cnblogs.com/mengd/p/7289400.html
Copyright © 2020-2023  润新知