• tkinter学习-滚动条


    阅读目录

    • Listbox 以列表的形式显示
    • Scrollbar 滚动条
    • Scale 更滚动条很相似,但更精准

    Listbox

       说明:列表框控件,在Listbox窗口小部件是用来显示一个字符串列表给用户

      属性:创建一个Listbox组件的时候,它是空的,首先是添加文本进去

      insert():有两个参数,第一个是插入的索引号,第二个是插入的字符串 

    from tkinter import *
    root = Tk()
    var = StringVar()
    var.set(['A','B','C','D'])   #定义一个变量,赋值,然后再给listvariable
    thelb = Listbox(root,listvariable=var).pack()
    mainloop()

    结果:

        

      当然,使用delete()方法是删除列表中的项目,重用的操作是删除所有的项目:Listbox.delete(0,END)

      也可以删除指定的项目,用ACTIVE

    from tkinter import *
    root = Tk()
    thelb = Listbox(root,height=15)  #这里表示显示15行
    thelb.pack()
    for i in range(100):
        thelb.insert(END,i)
    #这个ACTIVE是一个特殊的索引号,表示当前被选中的项目
    thebu = Button(root,text='删除',command = lambda x = thelb: x.delete(ACTIVE)).pack()
    mainloop()

    结果:

          

      利用for循环插入数据,这里获取光标所选中的东西用 curselection()方法

    from tkinter import *
    root = Tk()
    var1 = StringVar()  #定义一个变量用来接收
    Label(root,bg='yellow',textvariable=var1,width=8).pack()
    thelb = Listbox(root)
    thelb.pack()
    for i in ['王昭君','庄周','吕布','亚瑟']:
        thelb.insert(END,i)
    def show():
        value = thelb.get(thelb.curselection())    #获取光标在这个listbox上选定的值
        var1.set(value)                 
    Button(root,text='获取',command=show).pack()
    mainloop()

     结果:

        

    Scrollbar:

       说明:滚动条控件,当内容超过可视化区域时使用,如列表框

      属性:为了在某个组件上安装滚动条,需要做这两件事情:

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

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

    from tkinter import *
    root = Tk()
    sb = Scrollbar(root)
    sb.pack(side=RIGHT,fill=Y)
    lb = Listbox(root,yscrollcommand= sb.set)
    for i in range(1000):
        lb.insert(END,i)
    lb.pack(side=RIGHT)
    sb.config(command=lb.yview)
    mainloop()

     结果:

        

    Scale:

      说明:范围控件,显示一个数值刻度,为输出限定范围的数字区间

      属性:指定一个范围,用from_,to,

    from tkinter import *
    root = Tk()
    Scale(root,from_=0,to=42).pack()
    Scale(root,from_=0,to=200,orient = HORIZONTAL).pack()
    mainloop()

     结果:

        

      当然,还有其他属性,orient,控制滑块的方位,HORIZONTAL(水平),VERTICAL(垂直)

      通过resolution选项可以控制分辨率(步长),通过tickinterval选项控制刻度

    from tkinter import *
    root = Tk()
    l = Label(root,text='',bg='yellow',width=10)
    l.pack()
    def show(v):
        l.config(text='长度为:' + v)  #这个是改变label标签的text
    Scale(root,from_=0,to=66,tickinterval=3,resolution=3,length=200,orient=VERTICAL).pack()
    Scale(root,from_=0,to=100,tickinterval=5,resolution=5,
          length=500,orient=HORIZONTAL,command=show).pack()  #这个时候会产生一个参数,传给函数就行
    mainloop()

     结果:

        

    参考文献:

      小甲鱼的python教学视频

  • 相关阅读:
    斐波那契数列——兔子问题
    最长上升子序列
    洛谷P1325 雷达安装
    K短路
    DIJ的优化,和spfa的优化
    洛谷P5017摆渡车
    洛谷P2258 子矩阵
    三元表达式、列表推导式和生成器表达式
    递归调用、 二分法
    匿名函数、内置函数
  • 原文地址:https://www.cnblogs.com/mengd/p/7295306.html
Copyright © 2020-2023  润新知