Python Code Notes

Information by python engineer

tkinter colorchooserの使い方 Python

tkinterで使用できるcolorchooserの使用方法を、実際に簡単なアプリを作成して確認しました。

目次

colorchooserの概要

colorchooserは、ユーザーが色を選択するためのダイアログを表示し、選択した色の値を返すためのモジュールです。

以下に、colorchooserを使用して表示した、色を選択するダイアログを示します。

f:id:vigilantPotato:20190523155754p:plain

色を選択して「OK」ボタンを押すと、選択した色のRGB値とカラーコードを、タプルで返してくれます。

例:((255.99609375, 128.5, 128.5), '#ff8080')

colorchooserの基本

インポート

colorchooserを使用するには、tkinterとは別にインポートをしておく必要があります。

from tkinter import colorchooser

ダイアログ呼び出し

「colorchooser.askcolor()」を実行すると、色選択用のダイアログが表示され、選択した色のRBG値とカラーコードを返してくれます。

color = colorchooser.askcolor()

colorにはタプルで色情報が入力され、要素1がRBG値、要素2がカラーコードになります。

次は、実際に簡単なアプリを作成しながら詳しい使い方を確認していきます。

アプリ概要

ボタンを押すと色選択ダイアログが起動し、選択した色をボタンの背景に設定するアプリを作成します。

以下に、作成したアプリの外観を示します。

f:id:vigilantPotato:20190523155831p:plain

ボタンが一つ表示されており、クリックすると色選択ダイアログが表示されます。

f:id:vigilantPotato:20190523155754p:plain

色を選択して「OK」ボタンを押すと、ボタンの背景が選択した色に変化します。

f:id:vigilantPotato:20190523155905p:plain

色選択ダイアログの呼び出し及びウィジェットへの設定をすることができました。

コードの解説

準備

モジュールのインポートと、tkinterのトップレベルウィジェットを作成します。

今回インポートするモジュールはtkinterとcolorchooserです。

import tkinter
from tkinter import colorchooser

#1.色選択ボタンのクラス

if __name__ == "__main__":
    root = tkinter.Tk()

    #2.ボタンの表示

    root.mainloop()

1.色選択ボタンのクラス

色選択ボタンのクラスを作成していきます。

tkinterのボタンクラスを継承し、クリック時にcolorchooserを呼び出す機能を追加します。

#1.色選択ボタンのクラス
class ColorSelectButton(tkinter.Button):
    def __init__(self, master):
        super().__init__(
            master=master,
            text="set color",
            width=15,
            command=self.color_change,  #クリック時に実行
            )

    def color_change(self):
        c = colorchooser.askcolor() #colorchooser呼び出し
        self.config(bg=c[1])        #背景を選択した色に設定

colorchooserで取得したカラーコードを、configオプションで自身の背景に設定しています。

2.ボタンの表示

最後に、ColorSelectButtonのオブジェクトを生成し、完了です。

    #2.ボタンの表示
    b = ColorSelectButton(master=root)
    b.pack()

コード全文

import tkinter
from tkinter import colorchooser

#1.色選択ボタンのクラス
class ColorSelectButton(tkinter.Button):
    def __init__(self, master):
        super().__init__(
            master=master,
            text="set color",
            width=15,
            command=self.color_change,  #クリック時に実行
            )

    def color_change(self):
        c = colorchooser.askcolor() #colorchooser呼び出し
        self.config(bg=c[1])        #背景を選択した色に設定


if __name__ == "__main__":
    root = tkinter.Tk()

    #2.ボタンの表示
    b = ColorSelectButton(master=root)
    b.pack()

    root.mainloop()