溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

tkinter控件的布局方式

發(fā)布時間:2020-07-18 04:16:18 來源:網(wǎng)絡(luò) 閱讀:768 作者:年少不輕狂12 欄目:編程語言

在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()
向AI問一下細(xì)節(jié)

免責(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)容。

AI