更多《Tkinter 实用教程》系列文章
tkinter ttk.Label 控件
本文提到的Label
特指ttk.Label
,和tkinter.Label
稍有区别。
标签ttk.Label
控件,可以以相同的样式,显示一行或多行文本、位图(bitmat
)或图像(image
)。
如何创建ttk.Label
对象
调用ttk.Label()
方法,并传入父控件即可,示例如下:
from tkinter import *from tkinter import ttkroot = Tk()main = ttk.Frame(root)l = ttk.Label(main,text="First label") # 创建一个 ttk.Label对象l.grid() # 放置 lmain.grid(column=0,row=0)root.mainloop()
展示效果如下图:
一般的控件放置顺序是,在主窗口中放置
Frame
,在Frame
中放置其他控件,如Label
、Button
等。
ttk.Label
如何展示文字
创建ttk.Label
对象时,传入的text
参数是最常用的标签文本设置方法,尤其当Label
只是用于展示固定文本的时候。
我们可以通过label['text']
随时修改Label
文本内容。
我们还可以通过Label
控件绑定一个字符串变量,每当变量值发生改变时,标签都会展示变量新的值。
这种功能可以通过textvariable
实现,代码如下:
from tkinter import *from tkinter import ttkdef click():lvalue.set(lvalue.get()+"1") # 设置变量值root = Tk()main = ttk.Frame(root)lvalue = StringVar()lvalue.set("变量值")l = ttk.Label(main,text="First label",textvariable=lvalue) # 绑定变量btn = ttk.Button(main,text="点一下",command=click)btn.grid(column=0,row=1)l.grid(column=0,row=0) main.grid(column=0,row=0)root.mainloop()
代码执行结果如下图:
点击按钮后,如下图:
被绑定的变量,并非普通变量,必须是通过
StringVar()
、IntVar()
创建的特殊对象。
Button
中的内容也是可以绑定变量的!!
ttk.Lable
如何展示图片
ttk.Label
还可以展示图片,如果你需要在界面上放置一张图片,这是最常用的做法。
示例代码如下:
from tkinter import *from tkinter import ttkroot = Tk()main = ttk.Frame(root)image = PhotoImage(file="bg.png")label = ttk.Label(main,image=image)label.grid()main.grid(column=0,row=0)root.mainloop()
执行结果如下图:
ttk.Label
同时展示文字和图片
如果你同时为Label
对象设置了text
参数和image
参数,那么文字和图像会同时展示。
此时我们可以使用compound
参数设定文字和图片的相对位置。
示例代码如下:
from tkinter import *from tkinter import ttkroot = Tk()main = ttk.Frame(root)image = PhotoImage(file="bg.png")label = ttk.Label(main,text="文本",image=image,compound=CENTER)# 文本在图片中间label.grid()labe2 = ttk.Label(main,text="文本",image=image,compound=RIGHT)# 文本在图片中间labe2.grid()labe3 = ttk.Label(main,text="文本",image=image,compound=LEFT)# 文本在图片中间labe3.grid()labe4 = ttk.Label(main,text="文本",image=image,compound=TOP)# 文本在图片中间labe4.grid()labe5 = ttk.Label(main,text="文本",image=image,compound=BOTTOM)# 文本在图片中间labe5.grid()main.grid(column=0,row=0)root.mainloop()
执行结果如下:
多行文本展示
ttk.Label
可以通过两种方式展示多行文本:
在文本中添加\n
,主动换行使用wraplength
指定最宽字符长度,自动换行
示例代码如下:
from tkinter import *from tkinter import ttkroot = Tk()main = ttk.Frame(root)image = PhotoImage(file="bg.png")label = ttk.Label(main,text="文本文本文本文本文本文本文本\n文本")# 手动换行label.grid()labe2 = ttk.Label(main,text="文本文本文本文本文本文本文本文本文本",wraplength=102)# 自动换行labe2.grid()main.grid(column=0,row=0)root.mainloop()
执行结果:
wraplength
是以像素为单位进行换行的
更多《Tkinter 实用教程》系列文章