如题,PC应用,通常是允许用户调节窗口的大小,那么窗口内的控件大小就需要跟随窗口大小变化进行自适应调整,最终效果如下
权重的设置的作用
例子中的代码,在主窗口win
中添加一个容器Frame
(框架)。在没有添加权重的设置,容器的拉伸属性sticky
没有生效。
***所以,要实现控件自适应窗口调整,关键的一个步骤就是权重设置。***
权重的设置方法
1、在上面例子的容器中,添加3个效果演示的Lable
from tkinter import *
win = Tk()
win.wm_minsize(400, 220)
win.rowconfigure(0, weight=1)
win.columnconfigure(0, weight=1)
Frame1 = Frame(win, bg="#74CB10")
Frame1.grid(row=0, column=0, sticky=NSEW)
# Frame1.rowconfigure(0, weight=1)
# Frame1.columnconfigure(0, weight=1)
# Frame1.columnconfigure(1, weight=1)
left = Label(Frame1, text='left', bg='#DD5044')
left.grid(row=0, column=0, sticky=NSEW)
right = Label(Frame1, text='right', bg='#1BA160')
right.grid(row=0, column=1, sticky=NSEW)
bottom = Label(Frame1, text='bottom', bg='#FD6934')
bottom.grid(row=1, column=0, columnspan=2, sticky=NSEW)
win.mainloop()
A:原始尺寸
B:仅添加行1的权重
# 仅添加行1的权重
Frame1.rowconfigure(0, weight=1)
C:添加1,2两行的权重
# 添加1,2两行的权重
Frame1.rowconfigure(0, weight=1)
Frame1.rowconfigure(1, weight=1)
C:添加1,10两行的权重
# 添加1,10两行的权重
Frame1.rowconfigure(0, weight=1)
Frame1.rowconfigure(9, weight=1)
容器中的对象,会先按原始尺寸进行填充,然后
1:如果有设置权重
2:容器有剩余的空间
3:对sticky
属性进行了设置
拉伸才会有效果。
权重是针对剩余的空间,权重也就是一个分配的比例.
比如:剩余12个单位的高度(宽度)。第1行(列)设置weight=1
,第2行(列)设置weight=2
,那么也就是第1行(列)会拉伸4个单位,第2行(列)会拉伸8个单位。
效果实例
A:左右2个区域,左边区域不变,右边区域拉伸
B:上下2个区域,下方区域不变,上方区域拉伸
版权声明:本文为wosind原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。