天天看点

【tkinter标准对话框】colorchooser:五彩缤纷,颜色选择对话框一、colorchooser简介二、运用实例三、参数&返回值

【tkinter标准对话框】colorchooser:五彩缤纷,颜色选择对话框一、colorchooser简介二、运用实例三、参数&返回值

文章目录

  • 一、colorchooser简介
  • 二、运用实例
    • 1. colorchooser基操
    • 2. 五彩缤纷的自由绘画
  • 三、参数&返回值
    • 1. 参数
    • 2. 返回值

一、colorchooser简介

在tkinter中有三种标准对话框:

  • messagebox
  • filedialog
  • colorchooser

认识完了 messagebox 消息对话框、 filedialog 文件对话框,最后再来看一下 colorchooser 颜色选择对话框。

colorchooser 很简单,它就是提供一个让用户可以根据自己需要选择的颜色界面。

可以说几乎绝大部分人都见过它。

就像这样子。

【tkinter标准对话框】colorchooser:五彩缤纷,颜色选择对话框一、colorchooser简介二、运用实例三、参数&返回值
【tkinter标准对话框】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()
           

运行程序,我们来简单看下。

【tkinter标准对话框】colorchooser:五彩缤纷,颜色选择对话框一、colorchooser简介二、运用实例三、参数&返回值

——

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()
           

运行程序

【tkinter标准对话框】colorchooser:五彩缤纷,颜色选择对话框一、colorchooser简介二、运用实例三、参数&amp;返回值

我们就可以通过 colorchooser 自己选择喜欢的颜色,从而改变画笔的颜色。

整个代码也不复杂,但是同样也是有需要注意的地方

  • 要清楚的知道 colorchooser 的返回值是什么,是一个二元组,其中二元组的第一个是表示RGB值的三元组,这个是我们需要的
  • 我们采用

    '#%02x%02x%02x' %(red, green, blue)

    的方式实现自定义颜色,但是只能传入整数值
  • 所以我们在获取 colorchooser RGB值的时候,需要使用

    int()

    来进行四舍五入取整
【tkinter标准对话框】colorchooser:五彩缤纷,颜色选择对话框一、colorchooser简介二、运用实例三、参数&amp;返回值

三、参数&返回值

——

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)
【tkinter标准对话框】colorchooser:五彩缤纷,颜色选择对话框一、colorchooser简介二、运用实例三、参数&amp;返回值
【tkinter标准对话框】colorchooser:五彩缤纷,颜色选择对话框一、colorchooser简介二、运用实例三、参数&amp;返回值