在上一篇文章中已经用到了Label组件。
组件的使用步骤如下:
1.创建这个控件
2.指定这个空间的master,即这个控件属于哪一个
3.告诉GM(geometry manager)有一个控件产生了
1.text属性使用方法
import tkinter top=tkinter.Tk() label=tkinter.Label(top,text="hello world") label.pack() tkinter.mainloop()
2.label内置位图bitmap的使用方法
import tkinter top = tkinter.Tk() label = tkinter.Label(top,bitmap = 'error') #上面的代码使用了内置位图error label.pack() top.mainloop()
3.改变控件的前景色和背景色
‘fg:前景色
bg:背景色
设置背景色的一个大的用处是:可以判断控件的大小(不同的控件使用不同的颜色,后续内容可以使用此特性来调试container)
from tkinter import * root = Tk() #在创建Label时指定各自使用的颜色 '''可以使用的颜色值:''' #使用颜色名称 Label(root,fg = 'red',bg = 'blue',text = 'Hello I am Tkinter').pack() #使用颜色值#RRGGBB Label(root,fg = 'red',bg = '#FF00FF',text = 'Hello I am Tkinter').pack() #使用系统相关的颜色值(Windows),不建议使用这样的值,不利于平台移植 Label(root,fg = 'red',bg = 'SystemButtonShadow',text = 'Hello I am Tkinter').pack() root.mainloop()
4.设置宽度与高度
from tkinter import * root = Tk() #创建三个Label,分别显示red,blue,yellow #注意三个Label的大小,它们均与文本的长度有关 Label(root,text = 'red',bg = 'red').pack() Label(root,text = 'blue',bg = 'blue').pack() Label(root,text = 'yellow',bg = 'yellow').pack() #再创建三个Label,与上次不同的是这三个Label均使用width和heigth属性 #三个Label的大小由width和height指定 Label(root,bg = 'red',width = 10,height = 3).pack() Label(root,bg = 'blue',width = 10,height = 3).pack() Label(root,bg = 'yellow',width = 10,height = 3).pack() root.mainloop()
5.同时使用图像与文本
compound: 指定文本(text)与图像(bitmap/image)是如何在Label上显示,缺省为None,当指定image/bitmap时,文本(text)将被覆盖,只显示图像了。可以使用的值:
left: 图像居左
right: 图像居右
top: 图像居上
bottom:图像居下
center:文字覆盖在图像上
bitmap/image:显示在Label上的图像
text: 显示在Label上的文本
label = Label(root,text = ‘Error‘,compound = ‘left‘,bitmap = ‘error‘)
from tkinter import * root = Tk() #演示compound的使用方法 #图像与文本在Label中的位置 #图像居下 Label(root,text = 'botton',compound = 'bottom',bitmap = 'error').pack() #图像居上 Label(root,text = 'top',compound = 'top',bitmap = 'error').pack() #图像居右 Label(root,text = 'right',compound = 'right',bitmap = 'error').pack() #图像居左 Label(root,text = 'left',compound = 'left',bitmap = 'error').pack() #文字覆盖在图像上 Label(root,text = 'center',compound = 'center',bitmap = 'error').pack() #消息循环 root.mainloop()
6.文本的多行显示
在Tk004中,使用width和heigth来指定控件的大小,如果指定的大小无法满足文本的要求是,会出现什么现象呢?如下代码:
Label(root,bg = ‘welcome to jcodeer.cublog.cn‘,width = 10,height = 3).pack()
运行程序,超出Label的那部分文本被截断了,常用的方法是:使用自动换行功能,及当文本长度大于控件的宽度时,文本应该换到下一行显示,Tk不会自动处理,但提供了属性:
wraplength: 指定多少单位后开始换行
justify: 指定多行的对齐方式
ahchor: 指定文本(text)或图像(bitmap/image)在Label中的显示位置
可用的值:
e
w
n
s
ne
se
sw
sn
center
布局如下图
nw n ne
w center e
sw s se
from tkinter import * root = Tk() #左对齐,文本居中 Label(root,text = 'welcome to jcodeer.cublog.cn',bg = 'yellow',width = 40,height = 3,wraplength = 80,justify = 'left').pack() #居中对齐,文本居左 Label(root,text = 'welcome to jcodeer.cublog.cn',bg = 'red',width = 40,height = 3,wraplength = 80,anchor = 'w').pack() #居中对齐,文本居右 Label(root,text = 'welcome to jcodeer.cublog.cn',bg = 'blue',width = 40,height = 3,wraplength = 80,anchor = 'e').pack() root.mainloop()
如果有什么疑问欢迎到我的微信公众号提问~