文章目录
- 一、colorchooser简介
- 二、运用实例
-
- 1. colorchooser基操
- 2. 五彩缤纷的自由绘画
- 三、参数&返回值
-
- 1. 参数
- 2. 返回值
一、colorchooser简介
在tkinter中有三种标准对话框:
- messagebox
- filedialog
- colorchooser
认识完了 messagebox 消息对话框、 filedialog 文件对话框,最后再来看一下 colorchooser 颜色选择对话框。
colorchooser 很简单,它就是提供一个让用户可以根据自己需要选择的颜色界面。
可以说几乎绝大部分人都见过它。
就像这样子。
二、运用实例
——
1. colorchooser基操
我们首先看看 colorchooser 怎么用的。
import tkinter as tk
from tkinter.colorchooser import *
root = tk.Tk()
def colorselect():
color = askcolor()
print(color)
tk.Button(root, text="颜色框", command=colorselect).pack(padx=10, pady=10)
root.mainloop()
运行程序,我们来简单看下。
——
2. 五彩缤纷的自由绘画
在【tkinter组件专栏】Canvas:发挥你横溢才华的画布 一文中,我们举了一个自由涂鸦的案例。
接下里我们对这个例子进行升级,结合 colorchooser 实现可以自己改变画笔的颜色。
import tkinter as tk
from tkinter.colorchooser import *
# 创建颜色选择函数
def colorselect():
global color # 设置全局变量
colors = askcolor()
# 设置color的颜色(R, G, B), 因为在后面会传入只能传入整数,所以这里利用int() 进行四舍五入
color = (int(colors[0][0]),int(colors[0][1]),int(colors[0][2]))
choosedcolor.set(str(color)) # 设置choosedcolor 变量的值
# 创建绘制函数
def paint(event):
x1, y1 = event.x, event.y
x2, y2 = event.x, event.y
w.create_oval(x1, y1, x2, y2, fill='#%02x%02x%02x' %color, outline='#%02x%02x%02x' %color) # 设置颜色为colorchooser所选择的
root = tk.Tk()
color = (0,0,0)
choosedcolor = tk.StringVar()
choosedcolor.set(str(color)) # 设置初始颜色
tk.Label(root, text="自由涂鸦").pack(padx=10,pady=10)
frame1 = tk.Frame(root)
tk.Button(frame1, text="选择颜色", relief='flat',command=colorselect).pack(side='left',padx=3, pady=3)
tk.Label(frame1, textvariable=choosedcolor).pack(side='left',padx=3, pady=3)
frame1.pack(anchor='w')
w = tk.Canvas(root, width=400, height=200)
w.pack()
w.bind("<B1-Motion>", paint) # 绘制函数绑定鼠标左键
tk.Button(root, text="清除屏幕", command=(lambda a='all':w.delete(a))).pack(padx=5, pady=5)
root.mainloop()
运行程序
我们就可以通过 colorchooser 自己选择喜欢的颜色,从而改变画笔的颜色。
整个代码也不复杂,但是同样也是有需要注意的地方
- 要清楚的知道 colorchooser 的返回值是什么,是一个二元组,其中二元组的第一个是表示RGB值的三元组,这个是我们需要的
- 我们采用
的方式实现自定义颜色,但是只能传入整数值'#%02x%02x%02x' %(red, green, blue)
- 所以我们在获取 colorchooser RGB值的时候,需要使用
来进行四舍五入取整int()
三、参数&返回值
——
1. 参数
colorchooser 涉及的参数不多。
参数 | 用法 |
---|---|
color | 1. 要显示的初始的颜色;2. 默认颜色是浅灰色(light gray) |
parent | 1. 如果不指定该选项,那么对话框默认显示在根窗口上;2. 如果想要将对话框显示在子窗口 w 上,那么可以设置 parent=w |
title | 1. 指定颜色选择器标题栏的文本;2. 默认标题是“颜色” |
——
2. 返回值
- 如果用户点击的 ‘确定’ 按钮,返回值是一个二元组 (triple, color)
- triple 是一个三元组 (R, G, B),其中 R, G, B 的范围是 [0, 255](就是该颜色的 RGB 颜色)
- color 是选中颜色的 16 进制的值
- 如果用户点击的 ‘取消’ 按钮,返回值是(None, None)