【Tkinter系列09/15】小部件(Scrollbar

22. 小部件Scrollbar

许多小部件(如列表框和画布)可以 就像将窗口滑动到更大的虚拟区域一样。你 可以将滚动条小部件连接到它们,为用户提供 相对于内容滑动视图的方式。 下面是带有关联条目小部件的屏幕截图 滚动条小部件:

  • 滚动条可以是水平的,如上所示, 或垂直。具有两个可滚动的小部件 维度(如画布或列表框)可以同时具有两者 水平滚动条和垂直滚动条。

  • 滑块滚动 拇指,是凸起的矩形, 显示当前滚动位置。

  • 两个三角形箭头在 每一端都用于移动小位置 步骤。左边或上面的那个叫,右边或底部的叫 叫。arrow1arrow2

  • 低谷是凹陷的样子 箭头和滑块后面可见的区域。这 槽分为两个命名区域(滑块上方或左侧) 和(在下方或右侧 滑块)。trough1trough2

  • 滑块相对于长度的大小和位置 的整个小部件中,显示大小和位置 相对于其总大小的视图。例如,如果 垂直滚动条与列表框相关联,并且 它的滑块从高度的 50% 延伸到 75% 滚动条,这意味着可见部分的 列表框显示整个列表的该部分开始 在中途标记处,在四分之三处结束 马克。

  • 在水平滚动条中,单击 B1(按钮 1) 左箭头将视图移动少量到 左边。单击右侧箭头上的 B1 可移动 按右边的金额查看。对于垂直 滚动条,单击向上和向下指向 箭头将视图向上或向下少量移动。 请参阅关联小部件的讨论 找出这些操作移动的确切金额 视图。

  • 用户可以拖动带有 B1 或 B2 的滑块(中间 按钮)以移动视图。

  • 对于水平滚动条,单击槽中的 B1 滑块左侧的视图向左移动 页面,然后单击 B1 在 滑块将视图向右移动一页。对于一个 垂直滚动条,相应的动作移动 向上或向下查看页面。

  • 在槽中的任意位置单击 B2 可移动滑块 使其左端或顶端位于鼠标处,或作为 尽可能接近它。

一化位置 滚动条是指闭合区间 [0.0, 1.0],用于定义滑块的位置。对于垂直 滚动条,位置 0.0 位于顶部,1.0 位于 底;对于水平滚动条,位置 0.0 位于 左端和右端 1.0。

创建新小部件作为 根窗口或框架的子窗口:Scrollbarparent

    w = tk.Scrollbar(parent, option, ...)

构造函数返回新小部件。滚动条的选项包括:Scrollbar

表 31.滚动条小部件选项

activebackground 滑块和箭头的颜色当 鼠标在他们身上。请参见第 5.3 节 “颜色”。
activerelief 默认情况下,滑块以浮雕样式显示。要显示 当鼠标悬停在 滑 块。tk.RAISED
bgbackground 颜色 鼠标未结束时的滑块和箭头 他们。
bdborderwidth 整个 3-D 边框的宽度 槽的周长,以及 箭头和滑块上的三维效果。违约 是低谷周围没有边框,一个两像素 箭头和滑块周围的边框。为 可能的值,请参见第 3.5 节 “尺寸”。
command 每当滚动条出现时要调用的过程 搬。有关调用序列的讨论, 请参见第 22.1 节 “滚动条命令回调”。
cursor 鼠标悬停在 滚动条。请参见第 5.8 节 “游标”。
elementborderwidth 箭头周围的边框宽度和 滑 块。默认值为 ,表示使用 选项的值。elementborderwidth=-1borderwidth
highlightbackground 颜色 滚动条没有焦点时突出显示 重点。请参见第 53 节 “焦点:路由键盘输入”。
highlightcolor 颜色 当滚动条具有焦点时,焦点突出显示。
highlightthickness 焦点的粗细突出显示。默认值为 。设置为 禁止显示焦点高亮。10
jump 此选项控制用户拖动时发生的情况 滑块。通常 (), 滑块的每一次小拖动都会导致调用回调。如果您设置 此选项为 ,回调不是 调用,直到用户释放鼠标按钮。jump=0command1
orient 设置为 水平滚动条,用于垂直滚动条(默认方向)。orient=tk.HORIZONTALorient=tk.VERTICAL
relief 控制浮雕 小部件的样式;默认样式为 。此选项无效 在窗口中。tk.SUNKEN
repeatdelay 此选项控制按钮 1 的长度 在滑块启动之前按住低谷 反复朝那个方向移动。默认值为 ,单位为 毫秒。repeatdelay=300
repeatinterval 此选项控制滑块移动的频率 在槽中按住按钮 1 时重复此操作。 默认值为 ,并且 单位为毫秒。repeatinterval=100
takefocus 通常,您可以通过滚动条按 Tab 键调整焦点 控件;请参见第 53 节 “焦点:路由键盘输入”。如果您不想要此设置,请设置 行为。滚动条的默认键绑定 允许用户使用←和→ 箭头键移动水平滚动条,它们 可以使用 ↑ 和 ↓ 键移动 垂直滚动条。takefocus=0
troughcolor 颜色 槽。
width 滚动条的宽度(其 y 维度如果 水平,如果垂直,则为 x 维)。 默认值为 16。有关可能的值,请参见第 5.1 节 “维度”。

滚动条对象上的方法包括:

.activate(element=None)

如果未提供参数,则此方法返回一个 的字符串、、或 ,具体取决于鼠标所在的位置。为 例如,如果鼠标位于滑块上,则该方法返回。空字符串为 如果鼠标当前不在任何一个上,则返回 三个控件。'arrow1''arrow2''slider''''slider'

若要突出显示其中一个控件(使用其浮雕样式和颜色),请调用此方法 并传递一个字符串,标识要标识的控件 突出显示、 、 或 之一。activereliefactivebackground'arrow1''arrow2''slider'

.delta(dxdy)

给定鼠标移动(以像素为单位),此方法返回应添加到当前滑块位置的值 以实现相同的运动。该值必须位于 闭合区间 [-1.0, 1.0]。(dxdy)float

.fraction(xy)

给定一个像素位置,此方法返回相应的 区间 [0.0, 1.0] 中的归一化滑块位置 最接近该位置。(xy)

.get()

返回两个数字 (, ),描述 滑块的当前位置。该值给出 滑块左边缘或上边缘的位置,用于 分别为水平和垂直滚动条;价值 给出右边缘或下边缘的位置。每 值位于区间 [0.0, 1.0] 中,其中 0.0 是 最左边或顶部位置,1.0 是最右边或 底部位置。例如,如果滑块扩展 从中途到四分之三 低谷,你可能会得到元组 (0.5,0.75)。abab

.identify(xy)

此方法返回一个字符串,指示哪个 (if 任何)的滚动条组件位于 给定坐标。 返回值为 、 或 之一 空字符串(如果该位置) 不在任何滚动条组件上。(xy)'arrow1''trough1''slider''trough2''arrow2'''

.set(firstlast)

要将滚动条连接到另一个小部件,请将 的 或 设置为滚动条的方法。参数具有相同的 含义为方法返回的值。请注意,移动 滚动条的滑块移动 相应的小部件。wwxscrollcommandyscrollcommand.set.get()

22.1. 回调Scrollbar command

当用户操作滚动条时,滚动条 调用其回调。论点 此调用取决于用户执行的操作:command

  • 当用户请求移动一个时 “单位”向左或向上,例如 单击左侧或顶部箭头上的按钮 B1,即 回调的参数如下所示:

        command(tk.SCROLL, -1, tk.UNITS)
  • 当用户请求向右移动一个单元时 或向下,参数为:

        command(tk.SCROLL, 1, tk.UNITS)
  • 当用户请求向左移动一页或 向上:

        command(tk.SCROLL, -1, tk.PAGES)
  • 当用户请求向右移动一页时 或向下:

        command(tk.SCROLL, 1, tk.PAGES)
  • 当用户将滑块拖动到范围内的值时 [0,1],其中 0 表示一直向左或向上,1 表示一直向右或向下,调用是:f

        command(tk.MOVETO, f)

这些调用序列与 画布、列表框和文本小组件的 和 方法。小部件没有方法。请参见第 10.1 节 “滚动条目小部件”。.xview().yview()Entry.xview()

22.2. 将 a 连接到另一个 控件Scrollbar

下面是一个代码片段,显示了画布的创建 带有水平和垂直滚动条。在此 片段,被假定为一个小部件。selfFrame

   self.canv = tk.Canvas(self, width=600, height=400,
        scrollregion=(0, 0, 1200, 800))
    self.canv.grid(row=0, column=0)

    self.scrollY = tk.Scrollbar(self, orient=tk.VERTICAL,
        command=self.canv.yview)
    self.scrollY.grid(row=0, column=1, sticky=tk.N+tk.S)

    self.scrollX = tk.Scrollbar(self, orient=tk.HORIZONTAL,
        command=self.canv.xview)
    self.scrollX.grid(row=1, column=0, sticky=tk.E+tk.W)

    self.canv['xscrollcommand'] = self.scrollX.set
    self.canv['yscrollcommand'] = self.scrollY.set

笔记:

  • 连接是双向的。画布的选项必须连接到 水平滚动条的方法和滚动条的选项必须连接到画布的方法。垂直滚动条和 画布必须具有相同的相互连接。xscrollcommand.setcommand.xview

  • .grid() 方法上的选项 对滚动条的调用迫使它们仅拉伸 足以适合相应尺寸 帆布。sticky

猜你喜欢

转载自blog.csdn.net/gongdiwudu/article/details/132602201