
Tkinterのウィジェット(Widget)には、あらかじめ設定されているオプション引数に値を与えることができます。使えるオプションはウィジェットごとに異なりますが、ウィジェットの高さや幅、背景色といった汎用性の高いものはほとんどのウィジェットで共通しています。
目次
オプション引数の指定方法
ウィジェットのオプション引数に値を指定するにはウィジェットを生成する際に次のように記述します。
任意のウィジェット名 = ウィジェットクラス名(親ウィジェット, オプション引数 = 値, ... )
例えば次のコードではラベルウィジェットのオプション引数に値を渡して、文字の色やフォントの種類、大きさ、背景色、縁とテキストとの間の横の余白などを設定しています。
import tkinter as tk
# tk.Frameを継承したApplicationクラスを作成
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
# ウィンドウの設定
self.master.title("ウィンドウのタイトル")
# 実行内容
self.pack()
self.create_widget()
# create_widgetメソッドを定義
def create_widget(self):
# label1ウィジェット
self.label1 = tk.Label(self.master, text="Hello World", fg="white", font=("MSゴシック", "20", "bold"), bg="black", padx="50", pady="50")
self.label1.pack()
if __name__ == "__main__":
root = tk.Tk()
app = Application(master=root)
app.mainloop()
文字色が白、フォントの種類がMSゴシック、背景色は黒など、設定したとおりに表示されました。
ウィジェットで共通のオプション引数
ウィジェットによって使えるオプション引数は異なりますが、次のオプション引数はほとんどのウィジェットで共通して使うことができます。
| 属性 | 説明 | 値 |
|---|---|---|
| anchor | ウィジェットを配置する位置を指定します |
tk.CENTER(中央) tk.W(左寄せ) tk.E(右寄せ) tk.N(上寄せ) tk.S(下寄せ) tk.NW(左上) tk.SW(左下) tk.NE(右上) tk.SE(右下) |
| width | ウィジェットの幅を指定します。 | 数値 |
| height | ウィジェットの高さを指定します | 数値 |
| bg or background | 背景の色を指定します | red,blue,grayなど |
| bd or borderwidth | ウィジェットの枠の幅を指定します | 数値 |
| relief | ボーダー部分の浮き彫りを指定します | flat,raised,sunken,groove,ridge |
| padx | 縁とウィジェットの間の横の余白 | 数値 |
| pady | 縁とウィジェットの間の縦の余白 | 数値 |
| fg or foreground | 文字や線を描く色を指定します | red,blue,grayなど |
| text | ウィジェットに表示する文字列を指定します | 任意の文字列 |
| textvariable | テキストを格納するオブジェクトを指定します。 | オブジェクト名 | image | ウィジェット内に表示する画像ファイルを指定します | 画像ファイルへのパス |
| bitmap | ウィジェット内に表示する bitmap を指定します |
あとからオプション引数の値を変更する方法
オプション引数の値はウィジェットの生成後に変更することもできます。これには configure メソッドを使います。
対象のウィジェット名.configure(オプション引数 = 値, ... )
実際に configure メソッドを使ってみましょう。先ほどのコードにボタンを追加して、押した時の処理としてラベルの文字に渡しているオプション引数 fg の値を red に変えてみます。
import tkinter as tk
# tk.Frameを継承したApplicationクラスを作成
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
# ウィンドウの設定
self.master.title("ウィンドウのタイトル")
# 実行内容
self.pack()
self.create_widget()
# create_widgetメソッドを定義
def create_widget(self):
# label1ウィジェット
self.label1 = tk.Label(self.master, text="Hello World", fg="white", font=("MSゴシック", "20", "bold"), bg="black", padx="50", pady="50")
self.label1.pack()
# button1ウィジェット
def button1_clicked():
self.label1.configure(fg = "red")
self.button1 = tk.Button(self.master, text="赤くなるボタン", font=("MSゴシック", "12", "bold"), command=button1_clicked)
self.button1.pack(padx="50", pady="20")
if __name__ == "__main__":
root = tk.Tk()
app = Application(master=root)
app.mainloop()
プログラム実行時は先ほどと同じように Hello World の文字が白色で表示されますが、「赤くなるボタン」を押すと文字色が赤色に変化します。







