您好,登錄后才能下訂單哦!
在tkinter中控件布局的方法主要有三種:
(1)pack布局
(2)grid布局
(3)place布局
pack布局采用塊的方式組織控件,pack(options,......),options參數(shù)可以選擇:side、fill、padx/pady、anchor等。
21-設(shè)置三個標(biāo)簽,使用pack方法布局。
from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱" ,bg="blue")
label2=Label(win,text="大黃蜂",bg="yellow")
label3=Label(win,text="救護車",bg="red")
label1.pack()
label2.pack()
label3.pack()
win.mainloop()
pack布局默認(rèn)將所涉及到的標(biāo)簽從上到下依次排列。要想改變標(biāo)簽的位置,可以使用side參數(shù)。
22-使用side參數(shù)重新布局三個標(biāo)簽。
from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",bg="blue")
label2=Label(win,text="大黃蜂",bg="yellow")
label3=Label(win,text="救護車",bg="red")
label1.pack(side=LEFT)
label2.pack(side=LEFT)
label3.pack(side=LEFT)
win.mainloop()
此時三個標(biāo)簽會呈現(xiàn)水平排列,除了LEFT(從左往右排列),還有TOP(從上往下排列),BOTTOM(從下往上排列),RIGHT(從右往左排列)。在使用pack方法時,可以使用padx/pady設(shè)置控件邊界與容器邊界的距離。
ipadx/ipady用來控制標(biāo)簽文字與標(biāo)簽容器x軸或y軸的距離。
23-在標(biāo)簽大黃蜂上下增加10像素的間距。
from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",bg="blue")
label2=Label(win,text="大黃蜂",bg="yellow")
label3=Label(win,text="救護車",bg="red")
label1.pack(fill=X)
label2.pack(pady=10)
label3.pack(fill=X)
win.mainloop()
24-讓大黃蜂標(biāo)簽x軸的間距是10。
from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",bg="blue")
label2=Label(win,text="大黃蜂",bg="yellow")
label3=Label(win,text="救護車",bg="red")
label1.pack()
label2.pack(ipadx=10)
label3.pack()
win.mainloop()
25-在窗口左下方建立一個內(nèi)容為“OK”的標(biāo)簽,標(biāo)簽與窗口左邊與下邊的距離是10像素。
from tkinter import *
win=Tk()
label=Label(win,text="OK",font="宋體 20 bold",bg="blue",fg="white")
label.pack(anchor=W,side=LEFT,padx=10,pady=10)
win.mainloop()
grid布局:通過類似表格結(jié)構(gòu)組織控件。
grid(options,......),options參數(shù)可以是row、column、padx/pady、rowspan、columnspan、sticky等
26-row與column使用體驗。
from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",bg="blue")
label2=Label(win,text="大黃蜂",bg="yellow")
label3=Label(win,text="救護車",bg="red")
label4=Label(win,text="霸天虎",relief="raised")
label5=Label(win,text="擎天柱",relief="raised")
label6=Label(win,text="大黃蜂",relief="raised")
label7=Label(win,text="救護車",relief="raised")
label8=Label(win,text="霸天虎",relief="raised")
label1.grid(row=0,column=0)
label2.grid(row=0,column=1)
label3.grid(row=0,column=2)
label4.grid(row=0,column=3)
label5.grid(row=1,column=0)
label6.grid(row=1,column=1)
label7.grid(row=1,column=2)
label8.grid(row=1,column=3)
win.mainloop()
27-columnspan的使用
from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",relief="raised")
label2=Label(win,text="大黃蜂",relief="raised")
label4=Label(win,text="霸天虎",relief="raised")
label5=Label(win,text="擎天柱",relief="raised")
label6=Label(win,text="大黃蜂",relief="raised")
label7=Label(win,text="救護車",relief="raised")
label8=Label(win,text="霸天虎",relief="raised")
label1.grid(row=0,column=0)
label2.grid(row=0,column=1,columnspan=2)
label4.grid(row=0,column=3)
label5.grid(row=1,column=0)
label6.grid(row=1,column=1)
label7.grid(row=1,column=2)
label8.grid(row=1,column=3)
win.mainloop()
columnspan會將標(biāo)簽2、3合并成一個標(biāo)簽。columnspan控制在column方向上合并數(shù)量,rowspan表示在row方向上合并的數(shù)量。
sticky類似anchor,但是只能設(shè)定N/S/W/E,即上/下/左/右
28-sticky的使用
from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",)
label2=Label(win,bg="green",width=20)
label3=Label(win,text="救護車")
label4=Label(win,bg="blue",width=20)
label1.grid(row=0,column=0,padx=5,pady=5,sticky=W)
label2.grid(row=0,column=1,padx=5,pady=5)
label3.grid(row=1,column=0,padx=5)
label4.grid(row=1,column=1,padx=5)
win.mainloop()
place布局允許指定組件的大小與位置。
29-place布局使用。
from tkinter import *
win=Tk()
label1=Label(win,text="擎天柱",bg="blue")
label2=Label(win,text="大黃蜂",bg="yellow")
label3=Label(win,text="救護車",bg="red")
label1.place(x=0,y=0)
label2.place(x=30,y=50)
label3.place(x=60,y=100)
win.mainloop()
此方法使用x/y參數(shù),x和y參數(shù)可以直接設(shè)定窗口組件左上方的位置,x是向右遞增,y是向下遞增。
使用width/height控制控件的實體大小。
30-在窗口設(shè)置圖片標(biāo)簽位置和大小。
from tkinter import *
win=Tk()
win.geometry('800x600')
picture1=PhotoImage(file=r'C:\Users\Administrator\Desktop\xingkong.png')
label1=Label(win,image=picture1)
label1.place(x=20,y=30,width=200,height=120)
picture2=PhotoImage(file=r'C:\Users\Administrator\Desktop\user.png')
label2=Label(win,image=picture2)
label2.place(x=200,y=200,width=400,height=240)
win.mainloop()
relx/rely參數(shù)設(shè)置相對于父窗口的位置,relwidth/relheight參數(shù)設(shè)置相對大小。
31-relx/rely與relwidth/relheight的應(yīng)用。
from tkinter import *
win=Tk()
win.geometry('600x400')
picture1=PhotoImage(file=r"C:\Users\Administrator\Desktop\xingkong.png")
label1=Label(win,image=picture1)
label1.place(relx=0.1,rely=0.1,relwidth=0.8,relheight=0.8)
win.mainloop()
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。