Tkinter PanedWindow weight参数
若是更改了窗口的宽度,将看到最右边的面板(Right Pane)放大或缩小,如下所示。
在tkinter.ttk模块中,若执行add(子对象,options),在options字段可以增加weight参数,weight代表更改窗口宽度时每个Pane更改的比例,如果插入三个子对象LabelFrame时weight都是1,代表放大或缩小窗口时,三个子对象是相同比例的。
需留意在add( )方法内使用weight参数时需要导入thikter.ttk。
示例1
在插入三个LabelFrame对象时增加weight=1。在执行时若是放大或缩小窗口,可以看到三个LabelFrame子对象是按相同比例更改的。注意程序第3行是导入tkinter.ttk,这是必需的否则程序会有编译错误。
from tkinter import *
from tkinter.ttk import *
root = Tk()
root.title("apidemos.com")
# pw = PanedWindow(root,orient=HORIZONTAL) # 创建PanedWindow对象
pw = PanedWindow(orient=HORIZONTAL) # 创建PanedWindow对象
leftframe = LabelFrame(pw,text="Left Pane",width=120,height=150)
pw.add(leftframe,weight=1) # 插入左边LabelFrame
middleframe = LabelFrame(pw,text="Middle Pane",width=120)
pw.add(middleframe,weight=1) # 插入中间LabelFrame
rightframe = LabelFrame(pw,text="Right Pane",width=120)
pw.add(rightframe,weight=1) # 插入右边LabelFrame
pw.pack(fill=BOTH,expand=True,padx=10,pady=10)
root.mainloop()
输出:
如果三个LabelFrame子对象设置不同的weight,以后更改窗口大小时,彼此会因weight有不同的影响。
示例2
设置更改窗口大小时Left Pane的weight=2、Middle Pane的weight=2、Right Pane的weight=1,这代表更改宽度时,更改比例分别是2:2:1。请读者留意第11、13、15行的weight设置。
from tkinter import *
from tkinter.ttk import *
root = Tk()
root.title("apidemos.com")
# pw = PanedWindow(root,orient=HORIZONTAL) # 创建PanedWindow对象
pw = PanedWindow(orient=HORIZONTAL) # 创建PanedWindow对象
leftframe = LabelFrame(pw,text="Left Pane",width=120,height=150)
pw.add(leftframe,weight=2) # 插入左边LabelFrame
middleframe = LabelFrame(pw,text="Middle Pane",width=120)
pw.add(middleframe,weight=2) # 插入中间LabelFrame
rightframe = LabelFrame(pw,text="Right Pane",width=120)
pw.add(rightframe,weight=1) # 插入右边LabelFrame
pw.pack(fill=BOTH,expand=True,padx=10,pady=10)
root.mainloop()
输出: