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)