Python GUI 编程:tkinter 初学者入门指南——滑块
在本文中,将介绍如何使用 tkinter Scale 滑块小部件创建滑块。滑块可以通过移动指示器来输入值。滑块有垂直和水平两种样式。
要创建滑块,使用如下构造函数。
tk.Scale(master, from_, to, **options)
使用 from_
和 to
选项指定滑块的最小值和最大值。使用 orient
选项指定滑块的排列方式,选项值可以是 horizontal
或 vertical
。
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()
获取当前值
要获取滑块的当前值,可以使用 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()
利用 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()