Tkinter 使用Scale设置窗口背景颜色
Scale控件有一个特点是在移动时可以自动触发事件。我们可以在使用Scale( )时增加command参数设置移动时所要执行的callback方法。
def callback():
.
.
.
sliderObj = Scale(..., command = callback)
从上述可知,当有尺度条移动时会调用与执行callback( )方法。
示例1
设计三个尺度条分别代表R、G、B三种颜色,当移动这三个尺度条时,Python Shell将显示这三个尺度条的颜色值,同时可以看到窗口背景颜色也将实时更改。
from tkinter import *
def bgUpdade(source): # 注意:这里的参数source是必须的
''' 更改窗口背景颜色 '''
red = rSlider.get() # 读取red值
green = gSlider.get() # 读取green值
blue = bSlider.get() # 读取blue值
print("R=%d, G=%d, B=%d" % (red, green, blue)) # 打印色彩数值
myColor = "#%02x%02x%02x" % (red,green,blue) # 将颜色转成十六进制字符串
print(myColor) # 打印这个代表颜色的字符串
root.config(bg=myColor) # 设置窗口背景颜色
root = Tk()
root.title("apidemos.com")
root.geometry("360x240")
rSlider = Scale(root,from_=0,to=255,label="Red Portion",command=bgUpdade)
gSlider = Scale(root,from_=0,to=255,label="Green Portion",command=bgUpdade)
bSlider = Scale(root,from_=0,to=255,label="Blue Portion",command=bgUpdade)
gSlider.set(125) # 设置green分量的初始值是125
rSlider.grid(row=0, column=0) # row=0,col=0
gSlider.grid(row=0, column=1) # row=0,col=1
bSlider.grid(row=0, column=2) # row=0,col=2
root.mainloop()
输出:
下列是Python Shell窗口显示的内容,此内容会记录RGB色彩值的变化。
上述设计是将尺度条放置在窗口左上角,如果想调整位置并不太方便,最好的设计方式是先设计一个容器,然后将这三个尺度条放置在此容器内,未来如果想要移动位置,可以直接移动容器位置。