用Tkinter打造GUI开发工具(14)Tkinter小部件的Label标签部件

用Tkinter打造GUI开发工具(14)Tkinter小部件的Label标签部件
标签Label部件是Tkinter最常用的部件之一,其语法格式如下。

label=tk.Label ( master, option, ... )

master 参数为其父组件,就是用来放置这个部件的。 像其它部件一样,我们可以在创建部件之后再为其指定属性。因此创建方法中的 options 选项参数可以为空。
首先看Label部件的参数options见表 Label部件的参数options。
在这里插入图片描述
在这里插入图片描述
Label部件的使用简单,我们前面程序中见过。其中参数anchor、 bg、 fg 、borderwidth、 cursor、 height、 width、 relief、 padx、 pady等都多次介绍,而且给了对比程序。而且这类属性对多数部件来说都是通用的。
在这里插入图片描述
我们就不再重复介绍了,主要介绍每个部件的特有属性。下面看一个关于Label部件的演示,程序中给出了详细的注释说明。

# -*- coding: utf-8 -*-
import  tkinter  as  tk  #导入Tkinter3模块

#移动窗口到屏幕中央       
def setCenter(root,w,h):
    ws = root.winfo_screenwidth()
    hs = root.winfo_screenheight()
    x = int( (ws/2) - (w/2) )
    y = int( (hs/2) - (h/2) )
    root.geometry('{}x{}+{}+{}'.format(w, h, x, y))

root =tk.Tk()  # 创建窗口对象
root.title(string = 'Label部件演示')  #设置窗口标题
setCenter(root,500,200)  #把主菜单移动的屏幕中央,菜单窗户口大小400X300

label = tk.Label(master=root,    #上级部件
                 text = 'Label部件 '*5,     #Label显示的 文字信息
                 height=3,      #高度
                 width=100,     #宽度
                 justify='right',  #对齐方式
                 bg='yellow',   #背景颜色
                 activebackground='red',  #活动状态时的背景色。
                 takefocus=True)  #该Label接收输入焦点
label.pack()   #pack()方法放置部件 

#只能显示GIF格式的图片
img=tk.PhotoImage(file="coins.gif")

label2 = tk.Label(master=root,   #上级部件
                  text = 'Label2部件'*5,  #Label显示的 文字信息
                  activebackground='red',    #活动状态时的前景色。
                  activeforeground='white',   #活动状态时的背景色。
                  anchor=tk.W,  #控制文本或者图像在label中的显示位置。
                  background='#BCFFFA',   #背景色
                  foreground='black',    #前景色
                  borderwidth=0,  #边框宽度
                  compound=tk.LEFT,   #文字在图片的位置
                  cursor='hand2',   #鼠标进入部件时的形状
                  disabledforeground='green',   #禁用时前景色
                  font=("微软雅黑",12),  #字体和大小
                  highlightbackground='blue',  #高亮背景色
                  highlightcolor='green',  #高亮前景色
                  highlightthickness=2,  #高亮边框的宽度
                  image=img,   #要显示的图形对象
                  height=6,    #高度
                  width=400,   #宽度
                  justify='right',  #对齐方式
                  padx=2,  #部件x方向间距
                  pady=3,  #部件y方向间距
                  underline=10,  #在第11个字符下划线
                  )  #在root上创建 label标签 
label2.pack()   #pack()方法放置部件 

bitmaps=["error", "gray75", "gray50", "gray25", "gray12"]  #系统图标
bitmaps2=[ "hourglass", "info", "questhead","question","warning"] #系统图标
frame=tk.Frame(master=root)   #建立一个Frame框架
frame.pack()  #pack()方法放置
for b in bitmaps:  
    label3 = tk.Label(master=frame,   #上级部件为frame
                      text=b,  #显示信息
                      bitmap=b,  #显示图标
                      width=100,  #宽度
                      background='white', #背景颜色
                      justify='right',  #对齐方式
                      borderwidth=2,  #边框宽度
                      padx=1,  #部件x方向间距
                      pady=1, #部件y方向间距
                      compound=tk.LEFT   #图片在文字左边
                      )
    label3.pack(side=tk.LEFT)

frame2=tk.Frame(master=root)
frame2.pack()    
for b in bitmaps2:
    label3 = tk.Label(master=frame2,   #上级部件为frame2
                      text=b,   #显示信息
                      bitmap=b,  #显示图标
                      width=100,  #宽度
                      background='white',   #背景颜色
                      justify='right',  #对齐方式
                      borderwidth=2,   #边框宽度
                      padx=1,   #部件x方向间距
                      pady=1,   #部件y方向间距
                      compound=tk.RIGHT     #图片在文字右边
                      )
    label3.pack(side=tk.LEFT)

root.mainloop()     # 进入消息循环

程序运行结果显示出如下的窗口。
在这里插入图片描述
通过上面程序的演示,大家对Label部件有了深刻的认识,对参数的使用方法有了了解。Label部件可以说是Tkinter最常用、最重要的部件。
Tkinter容器组件没有背景图片属性,通常利用Label图片属性,来给容器组件增加背景图片。我们利用Label部件设计一个背景图片类class BackPicture,这个类可以给Tk窗口、Toplevel窗口和框架Frame的背景显示一张图片。
class BackPicture类的入口参数file是符合Tkinter的PhotoImage方法的图片文件,图片格式支持GIF和PNG图形格式。参数img是PhotoImage对象数据。file和img是二选一,优先file参数。
下面看BackPicture类的定义和演示程序。

# -*- coding: utf-8 -*-
import tkinter as tk  #装载tkinter模块,用于Python3

root =tk.Tk()  # 创建窗口对象
root.title(string = 'BackPicture背景图片显示演示')   #设置窗口标题
root.geometry('400x100') #改变窗口大小

img_png =tk.PhotoImage(file = 'b.png') #装载一个图片文件

class  BackPicture(tk.Label):  #背景图片
    '''
    这个类可以给Tk窗口、Toplevel窗口和框架Frame的背景显示一张图片。
    BackPicture类的入口参数file是符合Tkinter的PhotoImage方法的图片文件,
    图片格式支持GIF和PNG图形格式。参数img是PhotoImage对象数据。
    file和img是二选一,优先file参数。
    bp= BackPicture(root,file = 'b.png')  #使用方法一 
    bp= BackPicture(root,img=img_png)  #使用方法二 
    '''
    def __init__(self ,root,file=None,img=None):
        self.root=root
        self.file=file
        self.img=img
        if self.file !=None:
            self.img=tk.PhotoImage(file =self.file) #装载一个图片文件
        tk.Label.__init__(self ,self.root, image = self.img)
        self.init()
        
    def init(self):
        self.place(x=0, y=0,  #坐标起点(0,0)
                    relwidth=1, #部件相对于窗口的宽度
                    relheight=1, #部件相对于窗口的高度
                    bordermode=tk.OUTSIDE  #部件边框模式
                    )  #使用place方法的相对位置

#bp= BackPicture(root,file = 'b.png') #使用方法一 
bp= BackPicture(root,img=img_png) #使用方法二 

b="info"
label2 = tk.Label(master=root,   #上级部件为frame
                      text=b,  #显示信息
                      bitmap=b,  #显示图标
                      width=100,  #宽度
                      background='white', #背景颜色
                      justify='left',  #对齐方式
                      borderwidth=2,  #边框宽度
                      padx=1,  #部件x方向间距
                      pady=1, #部件y方向间距
                      compound=tk.LEFT   #图片在文字左边
                      )
label2.pack()

b="question"
label3 = tk.Label(master=root,   #上级部件为frame
                      text=b,  #显示信息
                      fg='yellow',
                      bitmap=b,  #显示图标
                      width=100,  #宽度
                      background='blue', #背景颜色
                      justify='left',  #对齐方式
                      borderwidth=2,  #边框宽度
                      padx=1,  #部件x方向间距
                      pady=1, #部件y方向间距
                      compound=tk.LEFT   #图片在文字左边
                      )
label3.pack(side=tk.BOTTOM,anchor=tk.SW)


root.mainloop() # 进入Tkinter消息循环

这个程序运行结果。
在这里插入图片描述
这个class BackPicture类可以给Tk窗口、Toplevel窗口和框架Frame的背景显示一张图片。由于Tkinter的显示有先后优先顺序,这个BackPicture类要在Tk窗口、Toplevel窗口和Frame框架大小固定后,再显示BackPicture背景图片。这个类使用place方法,通过前面学习,我们了解place方法可以与pack方法、grid方法混合使用。因此并不影响原先的tk控件布局,如果tk控件尺寸小,有漏隙,就可以看到窗口背景图片贴图。

(本文为作者书籍《用Tkinter打造GUI开发工具》书中截选,有意合作或出版可联系作者QQ:2775205,量化开发或Tkinter开发咨询群:524949939)

小白python量化分析框架1.00已经设计完成,将随作者量化书一起提供全部源代码。

《用Tkinter打造GUI开发工具》是作者为打造第二代小白python量化分析框架2.0做基础框架模块搭建,未来开发Python程序更加方便和简单。设计的Python应用程序更加美观,功能更加丰富和强大。

发布了56 篇原创文章 · 获赞 67 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/hepu8/article/details/89735454