place方法可以设置组件的大小以及组件在容器中的精确位置,其参数及含义如下:
参数 | 含义 |
X | 设置组件距离窗口左侧的水平距离 |
y | 设置组件距离窗口顶部的垂直距离 |
width | 设置组件的宽度 |
height | 设置组件的高度 |
relx | 设置组件距离窗口左侧的相对距离,范围为0-1 |
rely | 设置组件距离窗口顶部的相对距离,范围为0-1 |
relwidth | 组件相对父容器的宽度,范围为0-1 |
relhright | 组件相对父容器的高度,范围为0-1 |
下面,用华容道游戏的窗口布局来展示用法:
from tkinter import *win=Tk()
#标题
win.title('华容道')
win.geometry('240x300')
Label(win,text='赵云',relief='groove',font=14).place(width=60,height=120,x=0,y=0)
Label(win,text='曹操',relief='groove',font=14).place(width=120,height=120,x=60,y=0)
Label(win,text='黄忠',relief='groove',font=14).place(width=60,height=120,x=180,y=0)
Label(win,text='张飞',relief='groove',font=14).place(width=60,height=120,x=0,y=120)
Label(win,text='关于',relief='groove',font=14).place(width=120,height=60,x=60,y=120)
Label(win,text='马超',relief='groove',font=14).place(width=60,height=120,x=180,y=120)
Label(win,text='卒',relief='groove',font=14).place(width=60,height=60,x=60,y=180)
Label(win,text='卒',relief='groove',font=14).place(width=60,height=60,x=120,y=180)
Label(win,text='卒',relief='groove',font=14).place(width=60,height=60,x=0,y=240)
Label(win,text='卒',relief='groove',font=14).place(width=60,height=60,x=180,y=240)
win.mainloop()
为了放大窗口时,希望窗口内的组件能够跟随窗口的缩放而缩放,可以使用relx、rely、relwidth、relhright参数来设置相对位置,取值范围为0-1
Label(win,text='赵云',relief='groove',font=14).place(relwidth=0.25,relheight=0.4,relx=0,rely=0)
Label(win,text='曹操',relief='groove',font=14).place(relwidth=0.5,relheight=0.4,relx=0.25,rely=0)
Label(win,text='黄忠',relief='groove',font=14).place(relwidth=0.25,relheight=0.4,relx=0.75,rely=0)
Label(win,text='张飞',relief='groove',font=14).place(relwidth=0.25,relheight=0.4,relx=0,rely=0.4)
Label(win,text='关于',relief='groove',font=14).place(relwidth=0.5,relheight=0.2,relx=0.25,rely=0.4)
Label(win,text='马超',relief='groove',font=14).place(relwidth=0.25,relheight=0.4,relx=0.75,rely=0.4)
Label(win,text='卒',relief='groove',font=14).place(relwidth=0.25,relheight=0.2,relx=0.25,rely=0.6)
Label(win,text='卒',relief='groove',font=14).place(relwidth=0.25,relheight=0.2,relx=0.5,rely=0.6)
Label(win,text='卒',relief='groove',font=14).place(relwidth=0.25,relheight=0.2,relx=0,rely=0.8)
Label(win,text='卒',relief='groove',font=14).place(relwidth=0.25,relheight=0.2,relx=0.75,rely=0.8)