Tkinter (16) 拉杆部件 Scale
拉杆部件的创建及其选项
拉杆部件中包含滑块 slider, 滑块槽 trough, 刻度 tick, 标题 label 以及滑块值 value.
import tkinter as tk
parent = tk.Tk()
scale = tk.Scale(parent, option, ...)
| 选项 | 说明 |
|---|---|
| activebackground | active 时的背景色 |
| bg or background | 背景色,点阵图时则为颜色值 0 的颜色 |
| bd or borderwidth | 滑块与槽外框的寛度,内定为 2 点素 |
| command | 滑块改变时调用的程序, 一个参数为滑块值 |
| cursor | 当鼠标移到部件时,所显示的鼠标图示 |
| digits | IntVar, DoubleVar (float), StringVar 为滑块值的显示方式 |
| font | 标签和注释使用的文本字体 |
| fg or foreground | 前景色 |
| from_ | 拉杆值范围的起始值, 内定为 0 |
| highlightbackground | 非聚焦时的聚焦颜色 |
| highlightcolor | 聚焦时的聚焦颜色 |
| highlightthickness | 聚焦厚度,内定 1, 0 则无 |
| label | 标题字符串, 水平在左上角, 垂直在右上角, 内定为无 |
| length | 部件长度, 单位为点素, 内定为 100 点素 |
| orient | HORIZONTAL/VERTICAL 水平或垂直方向 |
| relief | 花边样式,内定为 FLAT |
| repeatdelay | 直到经过指定时间 (毫秒), 开始重复按下滑块槽, 内定 300ms |
| repeatinterval | 重复间隔,以毫秒为单位重复按下滑块槽, 内定 100ms |
| resolution | 滑块值变动的最小单位值, -1 则为不取小数值 |
| showvalue | 是否显示滑块值, 内定为 True |
| sliderlength | 滑块的长度, 内定为 30 点素 |
| sliderrelief | 滑块的花边样式,内定为 RAISED |
| state | 部件状态,内定为 NORMAL / ACTIVE / DISABLED |
| takefocus | TAB 键在部件是否会循环焦点,1 则会,内定为空字符串,则仅在具有键绑定下循环焦点 |
| tickinterval | 刻度的间隔, 内定为 0, 无刻度 |
| to | 浮点拉杆值范围的终止值, 内定为 100 |
| troughcolor | 滑块槽的颜色 |
| variable | 滑块值变量, IntVar, DoubleVar 或 StrngVar |
| width | 滑块槽寛度,内定为 15 点素 |
拉杆部件的方法
| 方法 | 说明 |
|---|---|
| coords(value=None) | 返回滑块值为 value 时, 滑块所在的中心座标, 预设 None 为目前滑块所在的中心座标 |
| get() | 返回目前的滑块值 |
| identify(x, y) | 返回座标 (x, y) 对应的零件, ‘slider’滑块/‘trough1’前滑块槽/‘trough2’后滑块槽/‘’其他位置 |
| set(value) | 设置目前的滑块值 |
范例视窗及代码

import tkinter as tk
def update(value):
label.configure(text=f"You drag the slider to value {value}.")
root = tk.Tk()
root.wm_title("Scale Demo")
font = ('Courier New', 20, 'bold')
select = tk.IntVar()
scale = tk.Scale(
label='Scale Widget', font=font, orient=tk.HORIZONTAL, showvalue=False,
bg='green', fg='white', tickinterval=20, length=800, width=30,
troughcolor='blue', variable=select, command=update)
scale.grid(row=0, column=0)
label = tk.Label(text='', width=40, font=font)
label.grid(row=1, column=0)
root.mainloop()
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu