【第三集】Python GUI之Lable、Frame、Labelframe、PanedWindow

目录

一、Lable

1.文字图片分离

2.文字在图片上面

二、Frame

三、Labelframe

四、PanedWindow



一、Lable

Label 组件用于在界面上输出描述性的标签,这可以使用 Label 组件的文本输出功能来简单实现。

但是 Label 组件还可以显示图片,其中PhotoImage() 方法传入的图片只支持 .gif 格式的

1.文字图片分离


from tkinter import *   #把Tkinter模块里所有的东西都导进来了
 
root = Tk()
#在字符串里面加上\n可以分两行显示 
#justify选项可以设置左对齐,右对齐。默认是CENTER居中
#padx设置左右边界的距离,pady设置左右边界的距离
textLabel = Label(root, text='天生我材必有用', justify=LEFT, padx=10)  
#pack设置布局
textLabel.pack(side=LEFT)

#实例化PhotoImage就可以得到一个图片对象.传入想要的图片路径就可以了,只支持GIF 
#image的值是tkinter的图片对象
photo = PhotoImage(file=r"C:\image\2.gif")  
imgLabel = Label(root, image=photo) 
#pack设置布局
imgLabel.pack(side=RIGHT)
 
mainloop()

2.文字在图片上面


from tkinter import * 
 
root = Tk()
 
photo = PhotoImage(file=r"C:\image\cat_200_200.gif")
theLabel = Label(root,
                 text="天生我材必有用",
                 justify=LEFT,
                 image=photo,
                 compound=CENTER,   #混合属性
                 font=("宋体", 20),  #设置字体("字体",字号)
                 fg="white")
 
theLabel.pack()
 
mainloop()

二、Frame

frame相当于一个局部的窗体,可以用来装载其它控件

使用grid能让你更容易把握控件的位置,你可以指定它出现在几行几列,是否跨行跨列,跨几行等等

import tkinter
def pyFrame():
    root=tkinter.Tk()
    frame1 =tkinter.Frame(root,width=50,height=50)
    frame1.pack(fill=tkinter.X)
   #标签
    lable1=tkinter.Label(frame1,text='您的名字:  ')
    lable1.grid(row=1,column=0)    
    
   #文本框
    text=tkinter.Text(frame1,width=10, height=2)
    text.grid(row=1,column=1)
   
   #按钮触发事件
    def show():
        text.insert(tkinter.INSERT, '移网核心\n')
    language=tkinter.Button(frame1,text="确定",command=show)
    language.grid(row=2,column=1)
    
    tkinter.mainloop()

三、Labelframe

实际上就是添加了 Label 的 Frame

import tkinter
def pyLabelframe():
    root = tkinter.Tk()
    #padx为左右边距  pady为上下边距

    #单选Radiobutton
    group = tkinter.LabelFrame(root, text='告警类别:', padx=5, pady=5)
    group.pack(padx=10, pady=10)
    LANGS = [
        ('小区告警', 1),
        ('断站告警', 2),
        ('高频告警', 3),
        ('告警分析',  4)]
 
    v = tkinter.IntVar()
 
    for lang, num in LANGS:
        b = tkinter.Radiobutton(group, text=lang, variable=v, value=num)
        b.pack(anchor=tkinter.W)

        
    #复选Checkbutton
    group = tkinter.LabelFrame(root, text='查询条件:', padx=5, pady=5)
    group.pack(padx=10, pady=10)
    LANGS = ['发生时间','恢复时间','站点名称(局向)',]
 
    v = []
 
    for lang in LANGS:
        v.append(tkinter.IntVar())
        b = tkinter.Checkbutton(group, text=lang, variable=v[-1])
        b.pack(anchor=tkinter.W)
    
    tkinter.mainloop()

四、PanedWindow

PanedWindow(窗格)组件跟 Frame 组件类似,都是为组件提供一个框架,不过 PanedWindow 允许让用户调整应用程序的空间划分

参数 方法 用法详述

def pyPanedWindow():
    '''设置第1个panedwindow'''
   #orient指定窗格的分布方式;HORIZONTAL(横向分布)和VERTICAL(纵向分布)
    m1=tkinter.PanedWindow(orient=tkinter.VERTICAL,showhandle=True, sashrelief=tkinter.SUNKEN) 
   #填充告诉窗口小部件,扩展告诉所有小部件    
   #m1.pack(fill=tkinter.BOTH,expand=0)
    m1.grid(row=1, column=0, sticky=tkinter.W, padx=5, pady=5) 
   #add(child, **options)--添加一个新的子组件到窗格中
    top=tkinter.Label(m1,text='高频告警')
    m1.add(top)
    
    middle=tkinter.Label(m1,text='小区告警')
    m1.add(middle)
    
    bottom=tkinter.Label(m1,text='断站告经')
    m1.add(bottom)
    '''设置第2个panedwindow'''
    m2=tkinter.PanedWindow(orient=tkinter.VERTICAL,showhandle=True, sashrelief=tkinter.SUNKEN)
   #m2.pack(fill=tkinter.BOTH,expand=0)
    m2.grid(row=1, column=2, sticky=tkinter.W, padx=5, pady=5) 
    left_top=tkinter.Label(m2,text='断站未恢复')
    m2.add(left_top)
    left_bottom=tkinter.Label(m2,text='小区未恢复')
    m2.add(left_bottom)

    tkinter.mainloop()
    

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值