文章目錄
- 一、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)