Python GUI 编程:tkinter入门指南——滑块

介绍如何使用 tkinter Scale 滑块小部件创建滑块。滑块可以通过移动指示器来输入值。滑块有垂直和水平两种样式。

要创建滑块,使用如下构造函数。

tk.Scale(master, from_, to, **options)

使用 from_to 选项指定滑块的最小值和最大值。使用 orient 选项指定滑块的排列方式,选项值可以是 horizontalvertical

import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Scale 滑块演示')

scale1 = tk.Scale(root, from_=0, to=100, orient='horizontal', length=200)
scale1.pack()
scale2 = tk.Scale(root, from_=0, to=100, orient='vertical', length=200)
scale2.pack()
root.mainloop()
tkinter

获取当前值

要获取滑块的当前值,可以使用 variable 选项及 DoubleVar()

在滑块的值发生变化时运行函数,可以使用 command 选项调用函数。

import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Scale 滑块演示')
def scale_changed(event):
    scale_label.configure(text=current_value.get())

current_value = tk.DoubleVar()
scale = tk.Scale(root, from_=0, to=100, orient='horizontal', length=200, variable=current_value, command=scale_changed)
scale.pack()
scale_label = tk.Label(root, text=' ')
scale_label.pack()
root.mainloop()
tkinter

利用 Scale 小部件的 resolution 参数来设置步长。

resolution 参数设置为 5,这意味着滑块的相邻两个值的差为 5。

# 实例:颜色合成
import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Scale 滑块演示')
def rgb(v):
    color_c='#%02x%02x%02x' % (scale1.get(), scale2.get(), scale3.get())
    color_r='#%02x%02x%02x' % (scale1.get(), 0, 0)
    color_g='#%02x%02x%02x' % (0, scale2.get(), 0)
    color_b='#%02x%02x%02x' % (0, 0, scale3.get())
    button1.config(bg=color_c)  
    button1.config(text=color_c)   
    scale1.config(bg=color_r)
    scale2.config(bg=color_g)
    scale3.config(bg=color_b)

label = tk.Label(root, text="颜色合成", font=("Helvetica", 20))
label.pack(padx=5,pady=10)

scale1 = tk.Scale(root, from_=0, to=255,bg='red', orient='horizontal', length=250, command=rgb)
scale1.pack(padx=5,pady=10) 

scale2 = tk.Scale(root, from_=0, to=255,bg='green', orient='horizontal', length=250, command=rgb)
scale2.pack(padx=5,pady=10) 

scale3 = tk.Scale(root, from_=0, to=255,bg='blue', orient='horizontal', length=250,command=rgb)
scale3.pack(padx=5,pady=10) 

button1=tk.Button(root,text='颜色合成',width=15)
button1.pack(padx=5,pady=10)
root.mainloop()
tkinter

来源:信息科技云课堂

THE END