Tkinter 组件详解之Scrollbar

Scrollbar(滚动条)组件用于滚动一些组件的可见范围,根据方向可分为垂直滚动条和水平滚动条。Scrollbar 组件常常被用于实现文本、画布和列表框的滚动。

何时使用 Scrollbar 组件?

Scrollbar 组件通常几乎与 Text 组件、Canvas 组件和 Listbox 组件一起使用,水平滚动条还能跟 Entry 组件配合。

用法

下边例子我们演示如何使用垂直滚动条。为了在某个组件上安装垂直滚动条,你需要做两件事:

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

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

import tkinter as tkroot = tk.Tk()sb = tk.Scrollbar(root)
sb.pack(side="right", fill="y")lb = tk.Listbox(root, yscrollcommand=sb.set)for i in range(1000):lb.insert("end", str(i))lb.pack(side="left", fill="both")sb.config(command=lb.yview)root.mainloop()

分析:当 Listbox 组件的可视范围发生改变的时候,Listbox 组件通过调用 set() 方法通知 Scrollbar 组件。而当用户操纵滚动条的时候,将自动调用 Listbox 组件的 yview() 方法。

添加水平滚动条方法跟上边一样,只是将 yscrollcommand 改为 xscrollcommand,yview 改为 xview 即可。

参数

Scrollbar(master=None, **options) (class)

master -- 父组件

**options -- 组件选项,下方表格详细列举了各个选项的具体含义和用法:

选项 含义
activebackground 1. 指定当鼠标在上方飘过的时候滑块和箭头的背景颜色
2. 默认值由系统指定
activerelief 1. 指定当鼠标在上方飘过的时候滑块的样式
2. 默认值是 "raised"
3. 可以选择 "flat","sunken","groove","ridge"
background 1. 指定背景颜色
2. 默认值由系统指定
bg 跟 background 一样
borderwidth 1. 指定边框宽度
2. 默认值是 0
bd 跟 borderwidth 一样
command 1. 当滚动条更新时回调的函数
2. 通常的是指定对应组件的 xview() 或 yview() 方法
cursor 1. 指定当鼠标在上方飘过的时候的鼠标样式
2. 默认值由系统指定
elementborderwidth 1. 指定滚动条和箭头的边框宽度
2. 默认值是 -1(表示使用 borderwidth 选项的值)
highlightbackground 1. 指定当滚动条没有获得焦点的时候高亮边框的颜色
2. 默认值由系统指定
highlightcolor 1. 指定当滚动条获得焦点的时候高亮边框的颜色
2. 默认值由系统指定
highlightthickness 1. 指定高亮边框的宽度
2. 默认值是 0(不带高亮边框)
jump 1. 指定当用户拖拽滚动条时的行为
2. 默认值是 False,滚动条的任何一丝变动都会即刻调用 command 选项指定的回调函数
3. 设置为 True 则当用户松开鼠标才调用
orient 1. 指定绘制 "horizontal"(垂直滚动条)还是 "vertical"(水平滚动条)
2. 默认值是 VERTICAL
relief 1. 指定边框样式
2. 默认值是 "sunken"
3. 可以选择 "flat","raised","groove","ridge"
repeatdelay 1. 该选项指定鼠标左键点击滚动条凹槽的响应时间
2. 默认值是 300(毫秒)
repeatinterval 1. 该选项指定鼠标左键紧按滚动条凹槽时的响应间隔
2. 默认值是 100(毫秒)
takefocus 1. 指定使用 Tab 键可以将焦点移到该 Scrollbar 组件上
2. 默认是开启的,可以将该选项设置为 False 避免焦点在此组件上
troughcolor 1. 指定凹槽的颜色
2. 默认值由系统指定
width 1. 指定滚动条的宽度
2. 默认值是 16 像素

方法

activate(element) 
-- 显示 element 参数指定的元素的背景颜色和样式
-- element 参数可以设置为:"arrow1"(箭头1),"arrow2"(箭头2)或 "slider"(滑块)

delta(deltax, deltay)
-- 给定一个鼠标移动的范围 deltax 和 deltay(像素为单位,deltax 表示水平移动量,deltay 表示垂直移动量),然后该方法返回一个浮点类型的值(范围 -1.0 ~ 1.0)
-- 这通常在鼠标绑定上使用,用于确定当用户拖拽鼠标时滑块的如何移动

fraction(x, y)
-- 给定一个像素坐标 (x, y),该方法返回最接近给定坐标的滚动条位置(范围 0.0 ~ 1.0)

get()
-- 返回当前滑块的位置 (a, b)
-- a 值表示当前滑块的顶端或左端的位置,b 值表示当前滑块的底端或右端的位置(范围 0.0 ~ 1.0)

identify(x, y)
-- 返回一个字符串表示指定位置下(如果有的话)的滚动条部件
-- 返回值可以是:"arrow1"(箭头1),"arrow2"(箭头2)、"slider"(滑块)或 ""(啥都没有)

set(*args)
-- 设置当前滚动条的位置
-- 如果设置则需要两个参数 (first, last),first 表示当前滑块的顶端或左端的位置,last 表示当前滑块的底端或右端的位置(范围 0.0 ~ 1.0)

Tkinter 组件详解(九):Scrollbar相关推荐

  1. Tkinter组件详解(五):Listbox和Scrollbar

    Tkinter组件详解之Listbox Listbox(列表框)组件用于显示一个选择列表.Listbox 只能包含文本项目,并且所有的项目都需要使用相同的字体和颜色.根据组件的配置,用户可以从列表中选 ...

  2. Tkinter 组件详解(十):Scale

    Tkinter 组件详解之Scale Scale(刻度)组件看起来像是一个带数据的 Scrollbar(滚动条)组件,但事实上它们是不同的两个东东.Scale 组件允许用于通过滑动滑块来选择一个范围内 ...

  3. Tkinter 组件详解(七):Entry

    Tkinter 组件详解之Entry Entry(输入框)组件通常用于获取用户的输入文本. 何时使用 Entry 组件? Entry 组件仅允许用于输入一行文本,如果用于输入的字符串长度比该组件可显示 ...

  4. Tkinter 组件详解(八):Listbox

    Tkinter 组件详解之Listbox Listbox(列表框)组件用于显示一个选择列表.Listbox 只能包含文本项目,并且所有的项目都需要使用相同的字体和颜色.根据组件的配置,用户可以从列表中 ...

  5. Tkinter 组件详解(一):Label

    Tkinter 组件详解之Label Label(标签)组件用于在屏幕上显示文本或图像.Label 组件仅能显示单一字体的文本,但文本可以跨越多行.另外,还可以为其中的个别字符加上下划线(例如用于表示 ...

  6. Tkinter 组件详解(五):Frame

    Tkinter 组件详解之Frame Frame(框架)组件是在屏幕上的一个矩形区域.Frame 主要是作为其他组件的框架基础,或为其他组件提供间距填充. 何时使用 Frame 组件? Frame 组 ...

  7. Tkinter 组件详解(四):Radiobutton

    Tkinter 组件详解之Radiobutton Radiobutton(单选按钮)组件用于实现多选一的问题.Radiobutton 组件可以包含文本或图像,每一个按钮都可以与一个 Python 的函 ...

  8. Tkinter 组件详解(十九):Toplevel

    Toplevel(顶级窗口)组件类似于 Frame 组件,但 Toplevel 组件是一个独立的顶级窗口,这种窗口通常拥有标题栏.边框等部件. 何时使用 Toplevel 组件? Toplevel 组 ...

  9. Tkinter 组件详解(十八):PanedWindow

    PanedWindow 组件(Tk8.4 新增)是一个空间管理组件.跟 Frame 组件类似,都是为组件提供一个框架,不过 PanedWindow 允许让用户调整应用程序的空间划分. 何时使用 Pan ...

最新文章

  1. Docker从入门到实践
  2. Ubuntu下apt-get命令详解
  3. 鸟哥的Linux私房菜(服务器)- 第六章、 Linux 网络侦错
  4. 将jOOQ与Spring结合使用:代码生成
  5. a标签点击跳转失效--IE6、7的奇葩bug
  6. Python二叉树遍历
  7. android studio1.5 for mac,适用于Mac的Android Studio 1.5.x随机崩溃
  8. Vue (响应式原理-模拟-2-Observer)
  9. vlookup使用步骤_使用vlookup出错,看看原因多为这几个!快来看看!
  10. LeetCode OJ - Best Time to Buy and Sell Stock III
  11. 计算机械效率的公式四种,功功率机械效率复习题超全
  12. 作为移动开发者,你应该了解Baas(后端即服务)
  13. 【ichart】简单的统计图表ichart.js的使用
  14. 苹果系统如何添加服务器的打印机,哪位清楚macbookair如何添加打印机
  15. 黑客第二课:脱屌第一步(主要讲unix-like系统的初步知识)
  16. LoadBalancer整合springboot
  17. mysql的索引缺点_Sqlite数据库中索引的使用、索引的优缺点
  18. 长沙哪个服务器网速最快,5G网络湖南长沙首秀?网速是4G的60倍,快的让人无法想象...
  19. jQuery中的动画 -- 案例
  20. 程序员真实故事系列 ---阅读书籍计划

热门文章

  1. Java SE基础学习笔记2·面向对象
  2. 编写手机脚本入门篇 2---bat 命令
  3. Python中tqdm模块介绍
  4. Map集合,File类,IO流
  5. 快速设置安卓小米华为oppovivo充电提示音,教程来了
  6. 为什么互联网流行 996 而非886、776
  7. 使用HTML和CSS的明信片动画效果
  8. Ubuntu16安装OpenJDK7
  9. Android单元测试(一):JUnit框架的使用
  10. idea断点调试教程