• Python tkinter -- 第11章滚动条


    第11章滚动条
    滚动条的作用就是可以让与之关联的控件的内容滚动显示。比如文本控件,对于一个很长的文件,不可能在窗口中完全显示出来,如果想看到没有显示的部分,就需要使用滚动条,让没有显示的内容出现在显示窗口中。一般情况下,滚动条是和列表框、画布控件、文本控件、输入控件等一起使用。滚动条也可以单独使用。比如显示放大倍数或者调整数值的时候。

    滚动条有两种:水平滚动条和垂直滚动条。滚动条由以下部分组成:
    (1)滑块
    滑块就是凸起的矩形图案。可以用鼠标拖动,也可以使用按钮调整位置。用程序设定位置也可以。滑块的移动,也代表显示内容或者相关数值的变化。

    (2)箭头按钮
    滚动条有2个按钮:arrow1和arrow2。按钮的图案一般是箭头样式的。水平滚动条位于左右两端,而垂直滚动条位于上下两端。功能就是调整显示内容,实现内容的滚动

    (3)滚动槽(trough )
    滚动槽是凹形部分。根据滑块的位置,分为trough1和trough2。用鼠标点击滚动槽,也可以实现滚动显示。后面章节会介绍如何实现。
    在这里插入图片描述
    11.1 属性

    属性描述
    activebackground当鼠标放上去时,滚动条的背景色
    activerelief鼠标经过时,滚动条的装饰效果
    backgroud
    bg
    按钮的背景色
    borderwidth
    bd
    边框的大小,默认为 2 个像素
    command关联的函数,当滚动被点击时,执行该函数
    cursor光标的形状设定,如arrow, circle, cross, plus 等
    elementborderwidth组成元素的宽度
    highlightcolor聚焦的高亮颜色
    highlightbackground聚焦的高亮背景颜色
    highlightthickness聚焦高亮边框宽度
    jump滑块跳到指定的位置。
    Orient设置滚动条的方向。可以是VERTICAL或者是HORIZONAL
    relief边框样式,设置控件3D效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默认为 FLAT。
    repeatdelay默认值是300
    repeatinterval默认值是100
    takefocus表示可以使用Tab键移动焦点到该控件。默认值是空字符串。
    troughcolor滚动槽的背景颜色
    width定义滚动条的宽度。默认值是15
    11.1.1 activebackground
    当鼠标经过滚动条时,滑块和箭头按钮的颜色。不过在我的windows环境下不起作用。
    11.1.2 activerelief
    鼠标经过滚动条时,滚动条的装饰效果。不过在我的windows环境下不起作用。
    11.1.3 backgroud(bg)
    滚动条的背景颜色。不过在我的windows环境下不起作用。

    11.1.4 borderwidth(bd)
    滚动条的边框。不过在我的windows环境下不起作用。
    11.1.5 command
    设置回调函数,用来处理滚动事件。该参数的一般对应关联控件的xview或者yview方法。可以参见第十章Text控件中的说明。
    11.1.6 cursor
    鼠标经过滚动条时,鼠标的形状。具体说明见3.3.6节

    import tkinter as tk
    root=tk.Tk()
    root.geometry('300x240')
    b1=tk.Scrollbar(root,cursor='spider')
    b1.pack(side = tk.RIGHT, fill = tk.Y)
    
    root.mainloop()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    11.1.7 elementborderwidth
    滚动条滑块和箭头的边框。不过在我的windows环境下不起作用
    11.1.8 highlightbackground,highlightcolor,highlightthickness
    滚动条获得输入焦点时的背景颜色、前景颜色和边框。不过不起作用
    11.1.9 jump
    jump=False的时候,滑块的微小变动,就会触发回调函数。
    jump=True的时候,只有当鼠标键释放,才会触发回调函数。
    11.1.10 orient
    设置滚动条的方向。有两种:tk.HORIZONTAL与tk.VERTICAL

    11.1.11 relief
    设置滚动条的外观。不过不起作用。
    11.1.12 repeatdelay
    鼠标左键在滚动槽按下并保持多长时间,滑块开始持续移动。默认时300毫秒。不过不起作用
    11.1.13 repeatinterval
    鼠标在滚动槽按下并保持,滑块的移动频率,就是多长时间滑块会移动一次。默认时间是100毫秒。不起作用。
    11.1.14 takefocus
    设置滚动是否可以使用Tab键获得输入焦点。
    11.1.15 troughcolor
    设置滚动槽的背景颜色。不起作用。
    11.1.16 width
    设置滚动条的宽度。这个不是滚动条有多长,而是有多宽。

    import tkinter as tk
    root=tk.Tk()
    root.geometry('300x240')
    b1=tk.Scrollbar(root,width=40)
    b1.pack(side = tk.RIGHT, fill = tk.Y)
    b2 = tk.Listbox(root, yscrollcommand = b1.set)
    for line in range(100):
        b2.insert(tk.END, "This is line number " + str(line))
     
    b2.pack( side = tk.LEFT, fill = tk.BOTH )
    b1.config( command = b2.yview )
    root.mainloop()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    结果:
    在这里插入图片描述
    11.2 方法

    方法描述
    activate(element)激活滚动条元素。
    element包括:”arrow1”,”arrow2”,”slider”。如果没有输入element,则返回当前正在激活的元素。如果没有激活的元素,返回空字符串。
    config(**options)配置滚动条的属性。具体的属性说明见滚动条属性说明。
    delta(deltax, deltay)这个函数是处理鼠标拖动情况的。根据鼠标在屏幕的位置,计算出滚动条滑块需要移动的偏移量,从而达到拖动的目的。
    deltax:水平滚动块增加值.
    deltay:垂直滚动块增加值
    返回值:滚动条要增加的偏移值。
    fraction(x, y)X:鼠标的水平位置
    Y:鼠标的垂直位置
    返回值:根据鼠标的位置返回的滑动块偏移量。(0.0-1.0).
    get()获得当前滑块的位置。
    identify(x, y)确认输入的屏幕的坐标点,是否在滚动条控件的范围内。
    (x,y):屏幕坐标点
    返回值:字符串
    “arrow1”:最左上角或者最上方
    “arrow2”:最右方后者最下方
    “slider”:在滑块上。
    “trough1”:在滑块的上方或者左方。
    “trough2”:在滑块的下方或者右方
    None:不在滚动条控件范围内。
    set(lo,hi)将滑块移动到新的位置。
    Lo:相对于上方(最左)的偏移
    Hi:相对于最下(最右)的偏移。

    11.2.1 activate
    激活滚动条的箭头按钮和滑块。合理的输入值是’arrow1’,’arrow2’和’slider’。如果没有输入值,返回当前激活的元素。不过不起作用。

    11.2.2 delta(deltax, deltay)
    给定一个鼠标移动的范围 deltax 和 deltay(以像素为单位,deltax 表示水平移动量,deltay 表示垂直移动量),然后该方法返回一个浮点类型的值(范围 -1.0 ~ 1.0),该返回值表示滑块需要移动的位置,以保持和鼠标的移动一致。这通常在鼠标绑定上使用,用于确定当用户拖拽鼠标时滑块的如何移动。
    11.2.3 fraction(x,y)
    根据鼠标的位置(x,y),计算出滑块的对应位置。(x,y)都是以像素为单位的。返回值的范围是(0.0,1.0)。
    11.2.4 get()
    获得滑块的位置。返回值为(a,b)。a表示距离最左边或者最上边的距离(看是水平还是垂直滚动条)。b表示距离最右边或者最下边的距离。取值范围为(0,1)。

    import tkinter as tk
    root=tk.Tk()
    root.geometry('300x240')
    b1=tk.Scrollbar(root,orient=tk.VERTICAL,width=40)
    b1.pack(side = tk.RIGHT, fill = tk.Y)
    b2 = tk.Listbox(root, yscrollcommand = b1.set)
    for line in range(100):
        b2.insert(tk.END, "This is line number " + str(line))
     
    b2.pack( side = tk.LEFT, fill = tk.BOTH )
    b1.config( command = b2.yview )
    def get():
        print(b1.get())
        
    b3=tk.Button(root,text='Get',command=get)
    b3.pack()
    root.mainloop()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    11.2.5 identify(x,y)
    判断屏幕坐标点是否在滚动条的范围内。如果在滚动条的范围内,返回这个坐标点的滚动条元素:arrow1,arrow2,slider,trough1,trough2。

    import tkinter as tk
    root=tk.Tk()
    root.geometry('300x240')
    b1=tk.Scrollbar(root,orient=tk.VERTICAL,width=40)
    b1.pack(side = tk.RIGHT, fill = tk.Y)
    b2 = tk.Listbox(root, yscrollcommand = b1.set)
    for line in range(100):
       b2.insert(tk.END, "This is line number " + str(line))
    
    b2.pack( side = tk.LEFT, fill = tk.BOTH )
    b1.config( command = b2.yview )
    def pos(event):
       print(b1.identify(event.x,event.y))
       
    b1.bind( "<Button-1>",pos)
    root.mainloop()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    11.2.6 set(lo,hi)
    将滚动条与其他的控件关联起来。设置xscrollcommand或者yscrollcommand的值为.set。详细的用法见11.2.5中的代码。

  • 相关阅读:
    视觉SLAM基础-李群和李代数
    6-2 分治法求解金块问题
    Word处理控件Aspose.Words功能演示:在 Python 中将 PDF 转换为 JPG
    能源与经济面板数据集(中国能源统计年鉴面板数据+区域经济、人口与二氧化碳排放量面板数据)
    C++STL详解(二)— string类模拟实现
    Python杂谈--关于iter迭代器的一些讨论
    Awk系列3--学习如何使用Awk变量、数值表达式以及赋值操作符
    深度学习(PyTorch)——torchvision中的数据集使用方法
    计算机网络——物理层(信道复用)
    VBA_MF系列技术资料1-207
  • 原文地址:https://blog.csdn.net/weixin_42272768/article/details/100761326