本記事では、tkinterで作成したウィンドウの背景を指定・変更する方法を3パターン紹介していきます!
ウェブアプリやサイトを設計する上で、背景色はとても大切ですよね。
今回は、数ある背景色変更方法について下記の3パターンを紹介していきたいと思います!
それぞれ異なる使い方になりますので是非参考にしていただければと思います!
- 転職のためのスキルアップとして効率的に学びたい
- 副業としてプログラミングができるようになりたい
- 独学での勉強に限界を感じている
これらに該当する方はプログラミングスクールという選択肢があります。
是非参考にしてみてください。
未経験でも安心!
おすすめなプログラミングスクールがあります!
config()メソッド
config()メソッドの使い方
まずはconfig()メソッドについて紹介します。
config()メソッドは下記のように使用します。
root.config(bg="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()
背景の色がこのように変わります!
ただし、setPalette()メソッドではボタンやラベルなどその他のウィジェットの色は変わらないみたいですね。
tk_setPaletteメソッド
tk_setPaletteの使い方
tk_setPalette()メソッドもconfig()メソッドと同様に、ウィンドウの背景色を変更できます。
root.tk_setPalette(background="color code", **kw)
ここで、第二引数である**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()
先ほど紹介したconfig()メソッドとは異なってウィジェット全体の色を変更することができました。いちいち全てのウィジェットの色を指定する必要がなくなります。
また、ウィジェットのオプションとして色を設定すると背景色を上書きできるみたいです。実際にEntryboxの背景を上書きしてみます。
#エントリーボックス作成
entry1 = tk.Entry(root,bg="lightgreen")
foregroundオプション
foregroundオプションは、ウィンドウ内の文字の色を変更させることができます。
root.tk_setPalette(background="orange",foreground="blue")
文字も先ほどと同様に色を上書きすることができます!
#ラベル作成
label1 = tk.Label(root,text="setPalette", fg="red")
activebackgroundオプション
activebackgroundオプションは、ウィンドウ内のウィジェットがアクティブになった際の背景色を指定することができます。実際に使ってみると以下のようになりました。
root.tk_setPalette(background="orange",activebackground="yellow")
ただしEntryボックスは、アクティブにしても色は変わらなかったです。
activeforegroundオプション
activeforegroundオプションは、ウィンドウ内のウィジェットがアクティブになった際のテキストの色を指定できます。
root.tk_setPalette(background="orange",activeforeground="blue")
insertbackgroundオプション
Entryboxなどのテキスト入力可能なウィジェットがアクティブになった際の「I」の色を変えることができます。
root.tk_setPalette(background="orange",insertbackground="red")
colorchooserで背景色を変更する
続いて、下図に示すような視覚的に分かりやすく色を選択できる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上のボタンの背景色が変更されます。
ここで、プログラム上でのcolorchooserで選択した色のデータは要素数2の配列データとして格納されます。
def color_change(self):
color = colorchooser.askcolor() #colorchooserを表示
self.config(bg=color) #選択した色に背景を変更
そして要素の一つ目は、RGBカラーコードを示し二つ目の要素が16進数によるカラーコードを示しています。
余談: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()メソッドの色は、とても目に優しい色なので個人的にはお気に入りのメソッドです!
以上となります!
最後まで見ていただきありがとうございました。
Python学習に役立つ書籍も紹介していますので是非参考にしてみてください!