Tkinterの各種ウィジェットで共通して使えるオプション引数

【Tkinter】各種ウィジェットで共通して使えるオプション引数

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 の文字が白色で表示されますが、「赤くなるボタン」を押すと文字色が赤色に変化します。

このエントリーをはてなブックマークに追加

コメントを残す

頂いたコメントは一読した後表示させて頂いております。
反映まで数日かかる場合もございますがご了承下さい。