这一章开始对tkinter的各个组件进行学习,之前第一篇中列出了tkinter的组件。
一、Label组件的简介
Lable就是平时说的标签,实际上它既可以是文本标签,还可以是图标。
Label的参数
还是使用help
查看一下(内容非常的多,有好几页,这里只选取部分展示):
Label(master=None, cnf={}, **kw)
|
| Label widget which can display text and bitmaps.
| # 标签小部件,可以显示文本和位图。
| __init__(self, master=None, cnf={}, **kw)
| Construct a label widget with the parent MASTER.
|
| STANDARD OPTIONS
| # 标准选项
| activebackground, activeforeground, anchor,
| background, bitmap, borderwidth, cursor,
| disabledforeground, font, foreground,
| highlightbackground, highlightcolor,
| highlightthickness, image, justify,
| padx, pady, relief, takefocus, text,
| textvariable, underline, wraplength
|
| WIDGET-SPECIFIC OPTIONS
| # 特定选项
| height, state, width
可以看到,Label有很多的参数,但是大部分都是通用的参数。
之前的栗子里面已经看过了Label的构建,这里不再做这个演示。
二、组件的通用属性介绍
在前面的篇幅已经列出来过组件的通用属性,这里结合Label进行进一步的介绍。
1.颜色:fg和bg
fg或foreground:可以设置前景色彩,在此相当于是标签的颜色。
bg或background:可以设置背景色彩。
from tkinter import *
root = Tk()
lab1 = Label(root,text="第一个标签",bg="red")
lab2 = Label(root,text="第二二个标签",bg="yellow")
lab1.pack()
lab2.pack()
root.mainloop()
2.尺寸:height和width
height可以设置Widget控件的高度,单位是字符高度。
width可以设置Widget控件的宽度,单位是字符宽度。
lab1 = Label(root,text="第一个标签",bg="red",height=3,width=20)
lab2 = Label(root,text="第二二个标",bg="yellow",height=5,width=10)
3.Anchor
前面介绍过,不再进行讲解。
相对的位置如下图:
4.wraplength
可以设置每行显示的最大字符数。
lab1 = Label(root,text="第一个标签",bg="red",height=3,width=20,wraplength=40)
lab2 = Label(root,text="第二二个标签",bg="yellow",height=5,width=10,wraplength=10)
5.font
指定组件上显示的文本字体。
这里有很多选项:
属性 | 参数 |
---|---|
family | 字形。如Helvetica、Times等,可以进入Word内参考所有系统字形 |
size | 字号。单位是像素 |
weight | 例如bold、normal |
slant | 例如italic、roman,如果不是italic则是roman |
underline | 下划线。例如True、False |
overstrike | 删除线。例如True、False |
通常将上面的参数用空格分开,组成一个字符串传给font。
lab1 = Label(root,text="第一个标签",bg="red",font="Times 20 bold")
6.justify
指定组件内部内容的对齐方式,支持LEFT,RIGHT,CENTER这三个值。
左对齐
lab1 = Label(root,text="1234567890",bg="red",wraplength=30,justify=LEFT)
右对齐
lab1 = Label(root,text="1234567890",bg="red",wraplength=30,justify=RIGHT)
居中对齐
lab1 = Label(root,text="1234567890",bg="red",wraplength=30,justify=CENTER)
7.Bitmaps
指定在组件上显示该选项指定的位图。
该选项可以是Tk_GetBitmap接收的任何形式的位图。
有3点需要注意:
- 位图的显示方式受anchor和justify的影响;
- 如果同时指定了Bitmap和text,那么bitmap覆盖文本;
-
如果同时指定了Bitmap和image,那么image覆盖bitmap。
下面是tkinter提供的在标签位置放置内建位图:
下面是一个小栗子:
lab1 = Label(root,text="1234567890",bitmap="warning")
注意到,text的文本被图像覆盖掉了。
8.compound
当需要图像与文字共存时,可以使用此参数定义文字与图像的位置关系。
compound参数可以是下列值。
- left:图像在左。
- right:图像在右。
- top:图像在上。
- bottom:图像在下。
- center:文字覆盖在图像上方。
示例:
lab1 = Label(root,text="1234567890",bitmap="warning",compound=LEFT)
9.relief
指定组件的3D效果,该选项包括的值有:
relief可选的值 | 效果 |
---|---|
FLAT | 平坦的 |
RAISED | 凸起的 |
SUNKEN | 内凹的 |
RIDGE | 镶嵌的 |
SOLID | 实心的 |
GROOVE | 开槽的 |
可以自己试试,大致效果如下:
10.image
指定组件中显示的图像。
通常可以先设置PhotoImage图像对象,再将此图像对象应用作为参数传给image。
pictest = PhotoImage(file = "C:\\Users\\Desktop\\1.png")
lab1 = Label(root,text="1234567890",image=pictest)
注意到,image将text覆盖了。
如果不想被覆盖,可以使用compound。
11.config
用于更改组件的属性。
在建立时没有直接设置的属性,可以再后面更改使用config( )方法属性,实现了组件属性的动态修改。
12.cursor
指定鼠标光标在组件上的样式。
其值可以是Tk_GetCursor()接收的任何格式。
13.keys()
对任意组件使用keys()可以得到该组件可用的参数的列表(List)。
>>> from tkinter import *
>>> root = Tk()
>>> lab1=Label(root,text="123")
>>> print(lab1.keys())
['activebackground', 'activeforeground', 'anchor', 'background', 'bd', 'bg', 'bitmap', 'borderwidth',
'compound', 'cursor', 'disabledforeground', 'fg', 'font', 'foreground', 'height', 'highlightbackground',
'highlightcolor', 'highlightthickness', 'image', 'justify', 'padx', 'pady', 'relief', 'state', 'takefocus', 'text',
'textvariable', 'underline', 'width', 'wraplength']
14.Separator
分隔线,tkinter.ttk中有Separator模块。
lab1 = Label(root,text="1234567890")
lab2 = Label(root,text="第二二个标签")
sep1 = Separator(root,orient=HORIZONTAL)
lab1.pack()
sep1.pack(fill=X)
lab2.pack()