美文网首页
tkinker布局pack 、grid、place

tkinker布局pack 、grid、place

作者: HC2 | 来源:发表于2022-01-05 11:25 被阅读0次

    、布局

    1、布局管理器pack

    • pack、grid 和 place 均用于管理同在一个父组件下的所有组件的布局,其中:

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

    用法:

    import tkinter as tk
    # 建立窗口
    window = tk.Tk()
    window.title('hello thinter')
    height= window.winfo_screenheight()
    width= window.winfo_screenwidth()
    window.geometry('800x600+%d+%d'%((width-800)/2,(height-600)/2))
    tk.Label(window, text="Red", bg="red", fg="white").pack(fill="x")
    tk.Label(window, text="Green", bg="green", fg="black").pack(fill="x")
    tk.Label(window, text="Blue", bg="blue", fg="white").pack(fill="x")
    
    window.mainloop()
    
    image.png

    展示效果,横向排列

    import tkinter as tk
    # 建立窗口
    window = tk.Tk()
    window.title('hello thinter')
    height= window.winfo_screenheight()
    width= window.winfo_screenwidth()
    window.geometry('400x200+%d+%d'%((width-400)/2,(height-200)/2))
    tk.Label(window, text="Red", bg="red", fg="white").pack(side="left")
    tk.Label(window, text="Green", bg="green", fg="black").pack(side="left")
    tk.Label(window, text="Blue", bg="blue", fg="white").pack(side="left")
    
    window.mainloop()
    
    image.png

    pack(**options)参数详解

    image.png

    pack_configure(**options)
    -- 跟 pack() 一样

    pack_forget()
    -- 将组件从屏幕中“删除”
    -- 并没有销毁该组件,只是看不到了
    -- 可以通过 pack 或其他布局管理器显示已“删除”的组件

    pack_info()
    -- 以字典的形式返回当前 pack 的选项

    pack_propagate(flag)
    -- 如果开启,父组件会自动调节尺寸以容纳所有子组件
    -- 默认值是开启(flag = True)
    -- 该方法仅适用于父组件

    pack_slaves()
    -- 以列表的形式返回该组件的所有子组件
    -- 该方法仅适用于父组件

    2、布局管理器grid

    import tkinter as tk
    # 建立窗口
    window = tk.Tk()
    window.title('hello thinter')
    height= window.winfo_screenheight()
    width= window.winfo_screenwidth()
    window.geometry('800x600+%d+%d'%((width-800)/2,(height-600)/2))
    tk.Label(window, text="用户名").grid(row=0)
    tk.Label(window, text="密码").grid(row=1)
    tk.Entry(window).grid(row=0, column=1)
    tk.Entry(window, show="*").grid(row=1, column=1)
    window.mainloop()
    
    image.png

    如果有个按钮想放在中间呢?可以使用跨行或者夸列的功能

    import tkinter as tk
    # 建立窗口
    window = tk.Tk()
    window.title('hello thinter')
    height= window.winfo_screenheight()
    width= window.winfo_screenwidth()
    window.geometry('400x200+%d+%d'%((width-400)/2,(height-200)/2))
    tk.Label(window, text="用户名").grid(row=0)
    tk.Label(window, text="密码").grid(row=1)
    tk.Entry(window).grid(row=0, column=1)
    tk.Entry(window, show="*").grid(row=1, column=1)
    tk.Button(text="提交",width=10,height=2).grid(row=2,columnspan=2) #columnspan=2 跨2列
    window.mainloop()
    
    image.png

    grid(**options)参数详解

    image.png

    3、布局管理器place

    通过偏移量进行布局

    import tkinter as tk
    # 建立窗口
    window = tk.Tk()
    window.title('hello thinter')
    height= window.winfo_screenheight()
    width= window.winfo_screenwidth()
    window.geometry('400x200+%d+%d'%((width-400)/2,(height-200)/2))
    tk.Label(window, text="用户名").place(x=0,y=0)
    tk.Label(window, text="密码").place(x=0,y=50)
    tk.Entry(window).place(x=50,y=0)
    tk.Entry(window, show="*").place(x=50,y=50)
    
    window.mainloop()
    

    相对父组建进行布局

    import tkinter as tk
    # 建立窗口
    window = tk.Tk()
    window.title('hello thinter')
    height= window.winfo_screenheight()
    width= window.winfo_screenwidth()
    window.geometry('400x200+%d+%d'%((width-400)/2,(height-200)/2))
    tk.Label(window, text="用户名").place(relx=0, rely=0)
    tk.Entry(window).place(relx=0.2, rely=0)
    tk.Label(window, text="密码").place(relx=0, rely=0.2)
    tk.Entry(window, show="*").place(relx=0.2, rely=0.2)
    
    window.mainloop()
    

    place(**options)参数详解

    image.png

    相关文章

      网友评论

          本文标题:tkinker布局pack 、grid、place

          本文链接:https://www.haomeiwen.com/subject/bctccrtx.html