标签Label

  • 标签Label
  • 标签Label的基本应用
  • Widget共同属性Color
  • Widget的共同属性Dimensions
  • Widget的共同属性Anchor
  • Label文字输出换行位置wraplength
  • Widget的共同属性Font
  • Label的justify参数
  • Widget的共同属性Bitmaps
  • Widget的共同属性relief
  • 标签文字与标签区间的间距padx/pady
  • 图像PhotoImage
  • Widget的共同方法config( )
  • Widget的共同属性Cursors
  • Widget的共同方法keys( )
  • 分隔线Separator
  • 标签Label

    标签Label的基本应用

    Label( )方法可以用于在窗口内建立文字或图像标签

    Label(父对象,options,...)
    

    Label( )方法的第一个参数是父对象,表示这个标签将建立在哪一个父对象(可想成父窗口或称容器)内。

    Label( )方法内其他常用的options参数:

  • anchor:如果空间大于所需时,控制标签的位置,默认是CENTER(居中)
  • bg或background:背景色彩
  • bitmap:使用默认图标当作标签内容
  • borderwidth或bd:标签边界宽度,默认是1
  • compound:可以设置标签内含图像和文字时,彼此的位置关系
  • cursor:当鼠标光标在标签上方时的外形。
  • fg或foreground:前景色彩
  • font:可选择字形、字形样式与大小
  • height:标签高度,单位是字符
  • image:标签以图像方式呈现
  • justify:存在多行文本时最后一行的对齐方式,可取值有LEFT/CENTER/RIGHT(靠左/居中/靠右),默认是居中对齐。
  • padx/pady:标签文字与标签区间的间距,单位是像素。
  • relief:默认是relief=FLAT,可由此控制标签的外框。
  • text:标签内容,如果有“\n”则可输入多行文字
  • textvariable:可以设置标签以变量方式显示
  • underline:可以设置第几个文字有下画线,从0开始算起,默认是-1,表示无下画线。
  • width:标签宽度,单位是字符
  • wraplength:本文到多少宽度后换行,单位是像素。
  • 在设计程序时,也可以将上述参数设置称为属性设置。

    例子: 建立一个标签,内容是“wkk”,同时在Python Shell窗口中列出Label的数据类型。

    from tkinter import *
    root = Tk()
    root.title("wkk")
    label = Label(root,text="wkk")
    label.pack()  		# 包装与定位组件
    print(type(label))	# 打印Label数据类型
    
    root.mainloop()  
    
    # 输出
    # <class 'tkinter.Label'>
    

    tkinter只会安排足够的空间显示控件

    pack( )方法主要是包装窗口的Widget控件和定位窗口的对象, 调用后可以在执行结果的窗口内见到上述Widget控件。

    label数据类型的结果是tkinter.Label数据类型。

    可以将声明Label对象和调用pack()合在一起

    from tkinter import *
    root = Tk()
    root.title("wkk")
    label = Label(root,text="wkk").pack()
    print(type(label))	# 打印Label数据类型
    
    root.mainloop()  
    
    # 输出
    # <class 'NoneType'>
    

    如果这时需要用此对象进一步操作Widget控件就会发生错误

    建议将对象声明与pack方法分开

    如果不会使用此对象做更进一步操作时才使用这种声明与pack一起的方式,如此不容易出现错误。

    Widget共同属性Color
  • fg或foreground:可以设置前景色彩,在此相当于是标签的颜色。
  • bg或background可以设置背景色彩。
  • **例子:**设置文字前景色是蓝色,背景色是黄色

    from tkinter import *
    root = Tk()
    root.title("wkk")
    label = Label(root,text="wkk",fg="blue",bg="yellow")
    label.pack()
    
    root.mainloop()  
    
    Widget的共同属性Dimensions
  • height可以设置Widget控件(此例是标签)的高度,单位是字符高度。
  • width可以设置Widget控件(此例是标签)的宽度,单位是字符宽度。
  • **例子:**标签宽度是15,高度是3,背景是黄色,前景是蓝色。

    from tkinter import *
    root = Tk()
    root.title("wkk")
    label = Label(root,text="wkk",fg="blue",bg="yellow",height=3,width=15)
    label.pack()
    
    root.mainloop()  
    
    Widget的共同属性Anchor

    Anchor其实是指标签文字在标签区域输出位置的设置,在默认情况下Widget控件是上下与左右都居中对齐

    可以使用anchor选项设定Widget控件的对齐:

    image-20220508200309589

    例子: 让字符串从标签区间左上角位置开始输出

    from tkinter import *
    root = Tk()
    root.title("wkk")
    label = Label(root,text="wkk",fg="blue",bg="yellow",height=3,width=15,anchor="nw")
    label.pack()
    
    root.mainloop()  
    

    anchor的参数设置也可以使用内建大写常数:

  • nw使用NW、n使用N、ne使用NE、w使用W、center使用CENTER、e使用E、sw使用SW、s使用S、se使用SE。
  • 当程序使用大写常数时,可以省略字符串的双引号。
  • anchor = SE
    
    Label文字输出换行位置wraplength

    wraplength这个参数可以设置标签中的文字在多少宽度后自动换行。

    **例子:**标签中的文字达到40像素宽度后自动换行

    from tkinter import *
    root = Tk()
    root.title("wkk")
    label = Label(root,text="wkklalalalalalalalalalalalalala",fg="blue",bg="yellow",height=3,width=15,anchor="nw",wraplength=40)
    label.pack()
    
    root.mainloop()  
    
    Widget的共同属性Font

    font参数用于设置文字字形,这个参数包含下列内容:

    1. 字形family:如Helvetica、Times等,可以进入Word内参考所有系统字形。
    2. 字号size:单位是像素
    3. weight:例如bold、normal。
    4. slant:例如italic、roman,如果不是italic则是roman。
    5. underline:例如True、False。
    6. overstrike:例如True、False。

    **例子:**使用Helvetic字形,大小是20,粗体显示

    from tkinter import *
    root = Tk()
    root.title("wkk")
    label = Label(root,text="wkk",fg="blue",bg="yellow",height=3,width=15,anchor="nw",font="Helvetic 20 bold")
    label.pack()
    
    root.mainloop()  
    

    height和width都是和字号联动

    此外,也可以用元组方式处理font参数

    font = ("Helvetic",20,"bold")
    
    Label的justify参数

    在标签的输出中,如果是多行的输出,在最后一行输出时可以使用justify参数设置所输出的标签内容是left/center/right(靠左/居中/靠右),默认是居中输出。

    from tkinter import *
    root = Tk()
    root.title("wkk")
    label = Label(root,text="wkk_____",fg="blue",bg="yellow",height=3,width=15,anchor="nw",wraplength=40,justify="left")
    label.pack()
    
    root.mainloop()  
    
    Widget的共同属性Bitmaps

    tkinter也提供了在标签位置放置内建位图的功能。

    在各操作系统平台都可以使用的位图。

    image-20220508201429927

    image-20220508201438231

    **例子:**在标签位置显示hourglass位图

    from tkinter import *
    root = Tk()
    root.title("wkk")
    label = Label(root,bitmap="error")
    label.pack()
    
    root.mainloop()  
    

    compound参数

    图像与文字共存时,可以使用此参数定义文字与图像的位置关系。

    compound参数可以是下列值:

    1. left:图像在左
    2. right:图像在右
    3. top:图像在上
    4. bottom:图像在下
    5. center:文字覆盖在图像上方
    from tkinter import *
    root = Tk()
    root.title("wkk")
    label = Label(root,bitmap="error",compound="left",text="error")
    label.pack()
    
    root.mainloop()  
    
    Widget的共同属性relief

    relief属性可以应用在许多Widget控件上,可以利用relief属性建立Widget控件的边框。

    image-20220508202249583

    **例子:**建立raised属性的标签

    from tkinter import *
    root = Tk()
    root.title("wkk")
    label = Label(root,text="raised",relief="raised")
    label.pack()
    
    root.mainloop()  
    
    标签文字与标签区间的间距padx/pady

    在设计标签或其他Widget控件时,若是不设置Widget的大小,系统将使用最适空间作为此Widget的大小

    也可以通过设置标签文字与标签区间的间距,达到更改标签区间的目的

  • padx可以设置标签文字左右边界与标签区间的x轴间距
  • pady可以设置标签文字上下边界与标签区间的y轴间距
  • from tkinter import *
    root = Tk()
    root.title("wkk")
    label = Label(root,text="raised",relief="raised",bg="lightyellow",padx=5,pady=10)
    label.pack()
    
    root.mainloop()  
    

    image-20220508202618656

    图像PhotoImage

    图片可以应用在许多地方,例如标签、功能按钮、选项按钮、文字区域等。

    在使用前可以用PhotoImage( )方法建立图像对象,然后再将此对象应用在其他窗口组件上。

    它的语法如下:

    imageobj = PhotoImage(file="xxx.gif")  # 扩展名.gif  传回图像对象
    

    注意: PhotoImage( )方法早期只支持gif文件格式,不接受常用的jpg或png格式的图像,目前已经可以支持png格式了

    可以在Label( )方法内使用“image=imageobj”参数设置此图像对象

    **例子:**窗口显示html.gif图片的基本应用

    from tkinter import *
    root = Tk()
    root.title("wkk")
    html_git = PhotoImage(file="html.gif")
    label = Label(root,image=html_git)
    label.pack()
    
    root.mainloop()  
    

    如果想要在标签内显示jpg文件,需要借助PIL模块的Image和ImageTk模块

    pip install pillow
    

    在程序设计中需导入的是PIL模块,主要原因是要向旧版Python Image Library兼容

    from tkinter import *
    from PIL import Image,ImageTk
    root = Tk()
    root.title("wkk")
    root.geometry("680x400")
    
    image=Image.open("jpgPic.jpg")
    jpgPic = ImageTk.PhotoImage(image)
    label = Label(root,image=jpgPic)
    label.pack()
    
    root.mainloop()  
    

    使用compound参数使图像与文字标签共存

    **例子:**窗口内同时有文字标签和图像的应用

    from tkinter import *
    root = Tk()
    root.title("wkk")
    Text = "...."
    html_git = PhotoImage(file="html.gif")
    label = Label(root,image=html_git,text=Text,bg="lightyellow",compound="left")
    label.pack()
    
    root.mainloop()  
    

    justify=“left”参数让文字标签的最后一行数据靠左输出

    **注意:**bitmap参数和image参数不能共存,如果发生了这种状况,bitmap参数将不起作用。

    Widget的共同方法config( )

    Widget控件在建立时可以直接设置对象属性,若是部分属性未建立,未来在程序执行时如果想要建立或是更改属性可以使用config( )方法。

    此方法内属性设置的参数用法与建立时相同。

    from tkinter import *
    
    counter = 0
    def run_counter(digit):
        def counting():
            global counter
            counter +=1
            digit.config(text=str(counter))
            digit.after(1000,counting)       # 隔1s后,调用counting, 持续调用
        counting()
        
    root = Tk()
    root.title("wkk")
    
    label = Label(root,bg="yellow",fg="blue",height=2,width=10,font="Helvetic 20 bold")
    label.pack()
    run_counter(digit)
    
    root.mainloop()  
    

    after( )方法,第一个参数1000表示隔1秒会调用第二个参数注名的方法,,此例中是counting( )方法。

    Widget的共同属性Cursors

    Cursors表示光标形状,程序设计时如果想要更改光标形状:可以设计鼠标光标在标签(Label)或按钮(Button)上时的形状

    光标形状可能会因为操作系统不同而有所差异

    光标形状与名称的对应:

    image-20220508205051133

    在一些Widget控件的参数中有cursor,可以由此设置光标在此控件上时的形状,如果省略,系统将沿用光标在父容器上的形状。

    **例子:**当鼠标光标经过raised标签时,其形状将变为“heart”

    from tkinter import *
    root = Tk()
    root.title("wkk")
    
    # 光标形状
    label = Label(root,text="raised",relief="raised",bg="lightyellow",padx=5,pady=10,cursor="heart")
    label.pack()
    
    root.mainloop()  
    
    Widget的共同方法keys( )

    Label( )方法的语法:

    Label(父对象,options,...)
    

    Widget有一个共同方法keys( )可以用列表(list)返回这个Widget所有的参数。

    传回标签Label( )方法的所有参数:

    from tkinter import *
    root = Tk()
    root.title("wkk")
    
    label = Label(root,text="wkk")
    label.pack()
    print(label.keys())
    
    root.mainloop()  
    

    image-20220508205649738

    分隔线Separator

    有时适度地在适当位置增加分隔线可以让整体视觉效果更佳

    tkinter.ttk中有Separator模块,可以用此模块完成此工作

    它的语法格式如下:

    Separator(父对象,options)
    

    Separaetor( )方法的第一个参数是父对象,表示这个分隔线将建立在哪一个父对象内

    options参数orient如果是HORIZONTAL则建立水平分隔线,VERTICAL则建立垂直分隔线。

    **例子:**在标签间建立分隔线

    from tkinter import *
    from tkinter.ttk import Separator
    root = Tk()
    root.title("wkk")
    
    myTitle = "wkk"
    myContent = "很高兴看到你"
    label_1 = Label(root,text=myTitle)
    label_1.pack(padx=10,pady=10)
    sep = Separator(root,orient=HORIZONTAL)
    sep.pack(fill=X,padx=5)
    label_2=Label(root,text=myContent)
    label_2.pack(padx=10,pady=10)
    
    root.mainloop()  
    

    pack(fill=X,padx=5),表示此分隔线填满X轴,它与窗口边界左右均相距5像素。

    来源:暴风雨中的白杨

    物联沃分享整理
    物联沃-IOTWORD物联网 » Tkinter:标签Label

    发表评论