3.3 控件共有屬性
tkinter有很多的控件,這些控件有很多的屬性。有一些屬性是相同的、共有的,為了方便以後的說明,在開始介紹控件之前把這些共有的屬性先介紹一下。
3.3.1 長度單位
tkinter的長度單位有:像素、厘米、毫米、英寸以及打印點數。
import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
t = tk.Frame(root,width=280,height=230)
b1 = tk.Canvas(t,bg='blue',width=40,height='1i')
b1.place(x=10,y=10)
b2 = tk.Canvas(t,bg='blue',width=40,height='72p')
b2.place(x=50,y=10)
t.place(x=0,y=0)
root.mainloop()
結果:
說明:兩個Canvas的控件,長度分別是1英寸和72個打印點數,可以看到它們的長度是一樣的。
3.3.2 顏色
tkinter的很多地方都會用到顏色。關於顏色有兩種表示方法:
(1)使用顏色的名稱
就是把顏色名稱直接賦值給相關屬性。比如background='blue’等。
(2)使用rgb格式
rgb是把紅、綠和藍三種基本顏色的數值,用16進制的格式來表示。詳細的內容可以去搜索三原色合成顏色的原理。
3.3.3 字體
字體也是tkinter中經常要用到的。tkinter可以使用系統安裝的所有字體。可以通過下面的代碼獲得系統安裝的所有字體:
import tkinter as tk
from tkinter import font
root=tk.Tk()
print(font.families())
定義字體的方式有三種:
(1)使用元組
可以把定義字體的元組直接賦值給控件的字體屬性。定義字體的元組包括3個元素(‘字體名稱’,’字體大小’,’字體修飾’)
字體名稱就是上面結果中的任意一種,比如’宋體’,’Times’等。
字體的大小有2種定義方式,帶引號的表示多少Point(見3.3.1的長度單位打印點數的定義),如果沒有引號,則表示以像素為單位的大小。下面可以看出兩種字體大小定義方式的不同。
import tkinter as tk
root=tk.Tk()
b=tk.Label(root,text='字體大小:20像素',font=('宋體',20,))
b.pack()
p=tk.Label(root,text='字體大小:20Point',font=('宋體','20',))
p.pack()
root.mainloop()
結果:
字體修飾有四種:bold、italic、underline和overstrike
注:如果需要多種字體修飾,只需要在後面添加需要的修飾定義就可以了。比如:
p=tk.Label(root,text=‘字體修飾’,font=(‘宋體’,12,‘overstrike’,‘bold’,‘underline’,‘italic’))
(2)使用Font類
Font類的方法實際上和第一種方法非常類似。區別是引入了Font類,字體的定義使用Font類完成。
Font類的使用方法:
import tkinter as tk
from tkinter import font
root=tk.Tk()
f=font.Font(family='宋體',size=22,slant='italic')
p=tk.Label(root,text='Font類字體',font=f)
p.pack()
root.mainloop()
結果:
(3)X windows
X windows可以使用另外的方法來設置字體。這裡就不展開說了,有興趣的可以查閱有關書籍。
3.3.4 錨定(anchor)
anchor就是定義如何擺放控件的位置,一般是擺放的空間比控件的尺寸要大。anchor有如下的取值: