3.3 控件共有属性
tkinter有很多的控件,这些控件有很多的属性。有一些属性是相同的、共有的,为了方便以后的说明,在开始介绍控件之前把这些共有的属性先介绍一下。

3.3.1 长度单位
tkinter的长度单位有:像素、厘米、毫米、英寸以及打印点数。

长度单位

说明

像素

屏幕的像素点。默认情况下,输入的正整数都会被认为是以像素为单位的长度

厘米

以厘米为单位。比如:width=‘1c’,表示宽度是1厘米

毫米

以毫米为单位。比如:width=‘1m’,表示宽度是1毫米

英寸

以英寸为单位。比如:width=‘1i’,表示宽度是1英寸

打印点数

以打印点数为单位。比如:width=‘1p’,表示宽度是1个打印点数

注:打印点数指的是打印机在1英寸上可以打印多少个点。在tkinter中,1个打印点数代表的长度是1英寸的72分之1。

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()

结果:

Python tkinter Entry宽度 tkinter entry大小_系统安装


说明:两个Canvas的控件,长度分别是1英寸和72个打印点数,可以看到它们的长度是一样的。

3.3.2 颜色
tkinter的很多地方都会用到颜色。关于颜色有两种表示方法:
(1)使用颜色的名称
就是把颜色名称直接赋值给相关属性。比如background='blue’等。

(2)使用rgb格式

rgb是把红、绿和蓝三种基本颜色的数值,用16进制的格式来表示。详细的内容可以去搜索三原色合成颜色的原理。

Python tkinter Entry宽度 tkinter entry大小_控件_02


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()

结果:

Python tkinter Entry宽度 tkinter entry大小_tkinter_03


字体修饰有四种:bold、italic、underline和overstrike

Python tkinter Entry宽度 tkinter entry大小_Python_04


注:如果需要多种字体修饰,只需要在后面添加需要的修饰定义就可以了。比如:

p=tk.Label(root,text=‘字体修饰’,fnotallow=(‘宋体’,12,‘overstrike’,‘bold’,‘underline’,‘italic’))(2)使用Font类

Font类的方法实际上和第一种方法非常类似。区别是引入了Font类,字体的定义使用Font类完成。

Python tkinter Entry宽度 tkinter entry大小_系统安装_05


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()

结果:

Python tkinter Entry宽度 tkinter entry大小_控件_06


(3)X windows

X windows可以使用另外的方法来设置字体。这里就不展开说了,有兴趣的可以查阅有关书籍。

3.3.4 锚定(anchor)
anchor就是定义如何摆放控件的位置,一般是摆放的空间比控件的尺寸要大。anchor有如下的取值:

anchor取值

说明

N

顶部居中

NE

右上角

NW

左上角

E

右边居中

W

左边居中

S

底部居中

SE

右下角

SW

左下角

CENTER

居中

Python tkinter Entry宽度 tkinter entry大小_Python_07

3.3.5 3D效果(relief)

3D效果是用来修饰控件的外框的,有以下几种:

Python tkinter Entry宽度 tkinter entry大小_控件_08

3.3.6 光标(cursor)

tkinter可以根据需要调整鼠标的光标。tkinter内置了如下的光标:

Python tkinter Entry宽度 tkinter entry大小_元组_09