天天看點

【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;傳回值