Python

[Python/Tkinter]ウィンドウの背景色を変更する方法を3つ紹介![tk_setPalette, tk_bisque, colorchooser]

本記事では、tkinterで作成したウィンドウの背景を指定・変更する方法を3パターン紹介していきます!

ウェブアプリやサイトを設計する上で、背景色はとても大切ですよね。

今回は、数ある背景色変更方法について下記の3パターンを紹介していきたいと思います!

  • configメソッド
    rootメインウィンドの背景色のみを変更したい場合
  • tk_setPaletteメソッド
    ウィンドウに配置されているウィジェットもまとめて色を変更したい場合
    (ウィジェットが複数ある場合に有効)
  • tk_bisqueメソッド
    ビスク色(クリーム色)にウィンドウ全体を変更したい場合

それぞれ異なる使い方になりますので是非参考にしていただければと思います!

  • 転職のためのスキルアップとして効率的に学びたい
  • 副業としてプログラミングができるようになりたい
  • 独学での勉強に限界を感じている

これらに該当する方はプログラミングスクールという選択肢があります。
是非参考にしてみてください。

未経験でも安心!
おすすめなプログラミングスクールがあります

本ページをブックマークするといつでも確認できます。

config()メソッド

config()メソッドの使い方

まずはconfig()メソッドについて紹介します。
config()メソッドは下記のように使用します。

root.config(bg="color code")

color codeの一覧はコチラ

config()メソッドを使ってみる

実際に使用したプログラムは下記のようになります!

import tkinter as tk

root=tk.Tk()
root.geometry("400x200")
root.title("Python")

#ラベル作成
label1 = tk.Label(root,text="setPalette")
label1.pack()
#エントリーボックス作成
entry1 = tk.Entry(root)
entry1.pack()
#ボタン作成
button1 = tk.Button(root,text="ボタン1")
button1.pack()
#背景色を指定
root.configure(bg="orange")
root.mainloop()

config1

背景の色がこのように変わります!

すらいむ管理人

ただし、setPalette()メソッドではボタンやラベルなどその他のウィジェットの色は変わらないみたいですね。

tk_setPaletteメソッド

tk_setPaletteの使い方

tk_setPalette()メソッドconfig()メソッドと同様に、ウィンドウの背景色を変更できます。

root.tk_setPalette(background="color code", **kw)

color codeの一覧はコチラ

ここで、第二引数である**kwは任意のオプションを指定することで様々な機能を持たせることができます。

スポンサーリンク

tk_setPalette()を使ってみる

option無し

まずは、オプション指定無しでbackgroundのみ指定してみます。

import tkinter as tk

root=tk.Tk()
root.geometry("400x200")
root.title("Python")
#ラベル作成
label1 = tk.Label(root,text="setPalette")
label1.pack()
#エントリーボックス作成
entry1 = tk.Entry(root)
entry1.pack()
#ボタン作成
button1 = tk.Button(root,text="ボタン1")
button1.pack()
#背景色を変更
root.tk_setPalette(background="orange")
root.mainloop()

setpalette1

先ほど紹介したconfig()メソッドとは異なってウィジェット全体の色を変更することができました。いちいち全てのウィジェットの色を指定する必要がなくなります。

ウィンドウ内に複数のウィジェットが存在する場合には非常に有効なメソッドです!

また、ウィジェットのオプションとして色を設定すると背景色を上書きできるみたいです。実際にEntryboxの背景を上書きしてみます。

#エントリーボックス作成
entry1 = tk.Entry(root,bg="lightgreen")

foregroundオプション

foregroundオプションは、ウィンドウ内の文字の色を変更させることができます。

root.tk_setPalette(background="orange",foreground="blue")

setpalette foreground
すらいむ管理人

文字も先ほどと同様に色を上書きすることができます!

#ラベル作成
label1 = tk.Label(root,text="setPalette", fg="red")

setpalette foreground2

activebackgroundオプション

activebackgroundオプションは、ウィンドウ内のウィジェットがアクティブになった際の背景色を指定することができます。実際に使ってみると以下のようになりました。

root.tk_setPalette(background="orange",activebackground="yellow")

setpalette activebackground
setpalette activebackground2

アイコン名を入力

ただしEntryボックスは、アクティブにしても色は変わらなかったです。

activeforegroundオプション

activeforegroundオプションは、ウィンドウ内のウィジェットがアクティブになった際のテキストの色を指定できます。

root.tk_setPalette(background="orange",activeforeground="blue")

setpalette activeforeground3

insertbackgroundオプション

Entryboxなどのテキスト入力可能なウィジェットがアクティブになった際の「I」の色を変えることができます。

root.tk_setPalette(background="orange",insertbackground="red")

setpalette insertbackground

colorchooserで背景色を変更する

続いて、下図に示すような視覚的に分かりやすく色を選択できるcolorchooserを用いて色を変更する方法を紹介します。

result of colorchooser

このcolorchooserを使用するには、colorchooserメソッドを使用します。そのため使用する際には、colorchooserメソッドをimportする必要があります。

import tkinter
from tkinter import colorchooser

では実際にcolorchooserを使用してボタンの背景色を変更するコードを紹介していきます!

import tkinter
from tkinter import colorchooser

#colorchooserを使用したclass
class ColorSelectButton(tkinter.Button):
    def __init__(self, master):
        super().__init__(master=master,
                                 text="色を設定",
                                 command=self.color_change,
                                 )

    def color_change(self):
        color = colorchooser.askcolor() #colorchooserを表示
        self.config(bg=color)        #選択した色に背景を変更

if __name__ == "__main__":
    root = tkinter.Tk()
    root.geometry("200x50")
    #ボタンの表示
    b = ColorSelectButton(master=root)
    b.pack()

    root.mainloop()

実行結果は下記のようになります!
ここで、変更したい色を選択して「OK」のボタンをクリックするとGUI上のボタンの背景色が変更されます。

result of colorchooser2
result of colorchooser2

ここで、プログラム上でのcolorchooserで選択した色のデータは要素数2の配列データとして格納されます。

    def color_change(self):
        color = colorchooser.askcolor() #colorchooserを表示
        self.config(bg=color)        #選択した色に背景を変更

そして要素の一つ目は、RGBカラーコードを示し二つ目の要素が16進数によるカラーコードを示しています。

result data of colorchooser array

余談:tk_bisque()メソッド

最後に余談にはなりますが、setPalette()メソッドの他にもbisque()メソッドというものがあります。

このbisque()メソッドはウィンドウ全体の色をクリーム色に指定することができます。

import tkinter as tk

root=tk.Tk()
root.geometry("400x200")
root.title("Python")

#ラベル作成
label1 = tk.Label(root,text="setPalette")
label1.pack()
#エントリーボックス作成
entry1 = tk.Entry(root)
entry1.pack()
#ボタン作成
button1 = tk.Button(root,text="ボタン1")
button1.pack()
#背景色を指定
root.tk_bisque()
root.mainloop()

bisque
すらいむ管理人

bisque()メソッドの色は、とても目に優しい色なので個人的にはお気に入りのメソッドです!

以上となります!
最後まで見ていただきありがとうございました。

Python学習に役立つ書籍も紹介していますので是非参考にしてみてください!

[2024年版][難易度別] Python学習にオススメな参考書:厳選9冊!Pythonを勉強する初心者から中級者を対象として、2023年現在で本当に良いと感じた厳選9冊を紹介しています。Pythonの基礎を学べる書籍から、GUI、アプリ作成、機械学習などを学べる書籍まで幅広く紹介しています!レビューも書き込んでいます!...