【第七集】Python GUI之Listbox、Scrollbar、Scale

目录

Listbox

Scrollbar 滚动条组件

Scale 滑块范围组件


Listbox

用列表框的形式显示出选项,并且支持滚动条操作。所以更适用于提供大量选项

1. selectmode 属性提供了四种不同的选择模式

SINGLE(单选)、BROWSE(也是单选,但是拖动鼠标或通过方向键可以直接改变选项)、MUTIPLE(多选)和 EXTENDED(也是多选,但需要同时按住 Shift 键或 Ctrl 键或拖拽鼠标实现)。默认是 BROWSE

2.数据量超过Listbox最大显示范围

①修改 height 属性

②可以为 Listbox 组件添加滚动条

Scrollbar 滚动条组件

滚动条组件作为独立的组件,与其他组件一起配合使用。
在某个组件上安装垂直滚动条:

1. 设置该组件的 yscrollcommand 选项为 Scrollbar 组件的 set() 方法

2. 设置 Scrollbar 组件的 command 选项为该组件的 yview() 方法

def pyListbox():
    
    master = tkinter.Tk()
#1.创建Scrollbar组件(放到右边,填充整个y轴)
    sb=tkinter.Scrollbar(master)
    sb.pack(side=tkinter.RIGHT,fill=tkinter.Y)
#2.创建listbox组件,selectmode属性
#  在listbox里滑动鼠标滚轮,调用set方法。同时修改滚动条位置
    theLB = tkinter.Listbox(master,selectmode=tkinter.EXTENDED,yscrollcommand=sb.set)
    theLB.pack()
#3.在Listbox里添加选项,下标从零开始。最后可以用END
    for item in ['小区告警', '断站告警', '高频告警','告警数据汇总','3g告警','4g告警']:
        theLB.insert(tkinter.END, item)   #END表示最后一个。里面什么都没有时,END是0;插入一个后,END是1
    #theLB.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
    '''
    theLB.delete(0, END)
    #删除Listbox里所有的选项。删除操作有两个参数:起始位置和结束位置
    #如果只有一个参数,就指定删除参数对应的选项
    '''
#4.滚动条互通互连,要设置滚动条的command选项,推动垂直滚动条调用yview
    sb.config(command=theLB.yview)
#5.添加按钮组件选中哪个按下删除哪个
    theButton = tkinter.Button(master, text='删除它', \
                   command=lambda x=theLB:x.delete(tkinter.ACTIVE)) #ACTIVE表示当前选中的值 
    theButton.pack()
 
    tkinter.mainloop()

Scale 滑块范围组件

from_和to设置数据范围

orient=HORIZONTAL设置Scale的垂直水平方向

tickinterval=5每5个步长显示刻度

resolution设置每次移动多少个长度,等于5的话,每次改变只能改变5

def pyScale1():
    root=tkinter.Tk()
#1.有两个参数from和to,但是from参数和Python的关键字冲突了,所以加个下横线 
    s1 = tkinter.Scale(root, from_=0, to=42)  
    s1.pack()
#2.默认Scale是垂直的,可以修改orient参数成水平的 
    s2 = tkinter.Scale(root, from_=0, to=200, orient=tkinter.HORIZONTAL) 
    s2.pack()
#3.获取滑块当前位置使用的是get方法
    def show():
        print(s1.get(), s2.get())
 
    tkinter.Button(root, text='获取位置', command=show).pack()
 
    tkinter.mainloop()

def pyScale2():
    root = tkinter.Tk()
#tickinterval=5每5个步长显示刻度
#resolution设置每次移动多少个长度,等于5的话,每次改变只能改变5
#设置length长度,不然都堆在一起了
    s1 = tkinter.Scale(root, from_=0, to=42, tickinterval=5, resolution=5, length=200).pack()
    s2 = tkinter.Scale(root, from_=0, to=200, tickinterval=10, orient=tkinter.HORIZONTAL, length=600).pack()
 
    tkinter.mainloop()

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值