、布局
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.pngpack_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.png3、布局管理器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
网友评论