zoukankan      html  css  js  c++  java
  • 《tkinter实用教程六》tkinter ttk.Label 控件

    tkinter ttk.Label 控件

    本文提到的 Label 特指 ttk.Label ,和 tkinter.Label 稍有区别。

    标签 ttk.Label 控件,可以以相同的样式,显示一行或多行文本、位图(bitmat)或图像(image)。

    如何创建 ttk.Label 对象

    调用 ttk.Label() 方法,并传入父控件即可,示例如下:

    from tkinter import *
    from tkinter import ttk
    
    root = Tk()
    main = ttk.Frame(root)
    l = ttk.Label(main,text="First label") # 创建一个 ttk.Label对象
    l.grid()                               # 放置 l
    main.grid(column=0,row=0)
    
    root.mainloop()
    

    展示效果如下图:

    ttk.Label

    一般的控件放置顺序是,在主窗口中放置Frame,在Frame中放置其他控件,如LabelButton等。

    ttk.Label 如何展示文字

    创建 ttk.Label 对象时,传入的 text 参数是最常用的标签文本设置方法,尤其当 Label 只是用于展示固定文本的时候。

    我们可以通过 label['text'] 随时修改 Label 文本内容。

    我们还可以通过 Label 控件绑定一个字符串变量,每当变量值发生改变时,标签都会展示变量新的值。

    这种功能可以通过 textvariable 实现,代码如下:

    from tkinter import *
    from tkinter import ttk
    
    def 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()
    

    代码执行结果如下图:

    textvariable

    点击按钮后,如下图:

    StringVar

    被绑定的变量,并非普通变量,必须是通过 StringVar()IntVar() 创建的特殊对象。

    Button 中的内容也是可以绑定变量的!!

    ttk.Lable 如何展示图片

    ttk.Label 还可以展示图片,如果你需要在界面上放置一张图片,这是最常用的做法。

    示例代码如下:

    from tkinter import *
    from tkinter import ttk
    
    root = 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()
    

    执行结果如下图:

    PhotoImage

    ttk.Label同时展示文字和图片

    如果你同时为 Label 对象设置了 text 参数和 image 参数,那么文字和图像会同时展示。

    此时我们可以使用 compound 参数设定文字和图片的相对位置。

    示例代码如下:

    from tkinter import *
    from tkinter import ttk
    
    root = 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()
    

    执行结果如下:

    compound

    多行文本展示

    ttk.Label 可以通过两种方式展示多行文本:

    1. 在文本中添加 \n,主动换行
    2. 使用 wraplength 指定最宽字符长度,自动换行

    示例代码如下:

    from tkinter import *
    from tkinter import ttk
    
    root = 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()
    

    执行结果:

    image

    wraplength 是以像素为单位进行换行的

    我的个人博客 Ahoh(www.ahoh.club),找我一起玩耍吧!!
  • 相关阅读:
    LeetCode 169. Majority Element
    Object-c block块
    Object-c动态特性
    Object-c基础(2)
    Object-c基础
    LeetCode171:Excel Sheet Column Number
    LeetCode242:Valid Anagram
    LeetCood8:String to Integer
    理解qsort 中的 cmp
    google goble cache
  • 原文地址:https://www.cnblogs.com/weidawang/p/15432169.html
Copyright © 2011-2022 走看看