Tkinterで使える4つのWidget変数

Tkinterで使える4つのWidget変数

Tkinterではウィジェットのオプション引数に文字列や数値といった値を渡すことができますが、variable や textvariable といったオプションには変数を渡すことができます。これらを活用することで変数に格納した値を使いまわしたり、動的に値を変更する処理が効率的に行えるようになります。

目次

Widget変数とは

Tkinter のLabel や Radiobutton といったいくつかのウィジェットには variable や textvariable といったオプション引数が用意されており、これらの値として変数を渡すことができます。

オプション引数にはPythonの変数をそのまま渡すことはできませんが、ウィジェットで使える変数オブジェクトが用意されており、これらを使うことで動的な処理を効率的に行うことができます。

これらのオプションの値はアプリケーションの変数と直接繋がっており、変数の値が変更された場合とウィジェットの状態が更新された場合の双方で動作します。

ウィジェット変数への値の設定には set メソッドを使い、値の取得には get メソッドを使います。

4つのWidget変数

StringVar

文字列を保持します。

任意の変数名 = StringVar(value="任意の文字列") # ウィジェット変数を生成
任意の変数名.set("任意の文字列") # 変数の値に任意の文字列を設定
任意の変数名.get() # ウィジェット変数の値を取得

IntVar

整数を保持します。

任意の変数名 = IntVar(value=任意の整数) # ウィジェット変数を生成
任意の変数名.set(任意の整数) # 変数の値に任意の整数を設定
任意の変数名.get() # ウィジェット変数の値を取得

DoubleVar

浮動小数点を保持します。

任意の変数名 = DoubleVar(value=任意の数値) # ウィジェット変数を生成
任意の変数名.set(任意の数値) # 変数の値に任意の数値を設定
任意の変数名.get() # ウィジェット変数の値を取得

BooleanVar

真偽値を保持します。

任意の変数名 = BooleanVar(value=任意の真偽値) # ウィジェット変数を生成
任意の変数名.set(任意の真偽値) # 変数の値に任意の真偽値を設定
任意の変数名.get() # ウィジェット変数の値を取得

Widget変数を用いた処理の例

実際にWidget変数を用いた簡単なアプリケーションを作成してみましょう。

import tkinter as tk

 # tk.Frameを継承したApplicationクラスを作成
class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)

        # ウィンドウの設定
        self.master.title("ウィンドウのタイトル")
        self.master.geometry("300x200")

        # ウィジェット変数を生成
        self.name_var = tk.StringVar(value="山田 太郎")
        self.age_var = tk.IntVar(value=20)
        self.agreement_var = tk.BooleanVar(value=False)

        # 実行内容
        self.pack()
        self.create_widget()

    # create_widgetメソッドを定義
    def create_widget(self):
        # 氏名
        self.name = tk.Entry(self,textvariable = self.name_var)
        self.name.pack()
        # 年齢
        self.age = tk.Spinbox(self,textvariable=self.age_var, from_=0, to=120)
        self.age.pack()
        # 同意
        self.agreement = tk.Checkbutton(self,text="同意します",variable=self.agreement_var)
        self.agreement.pack()
        # ボタンフレーム
        self.buttonframe = tk.Frame(self)
        self.buttonframe.pack()
        # sampleボタン
        self.sample = tk.Button(self.buttonframe,text="入力例を表示",command=self.inputSampleValue)
        self.sample.pack(side="left")
        # 確認ボタン
        self.verify = tk.Button(self.buttonframe,text="確認",command=self.outputValue)
        self.verify.pack(side="left")

    # inputSampleValueメソッドを定義
    def inputSampleValue(self):
        self.name_var.set(value="鈴木 一郎")
        self.age_var.set(value=31)
        self.agreement_var.set(value=False)

    # outputValueメソッドを定義
    def outputValue(self):
        print(self.name_var.get())
        print(self.age_var.get())
        print(self.agreement_var.get())

if __name__ == "__main__":
    root = tk.Tk()
    app = Application(master=root)
    app.mainloop()

このアプリケーションは氏名、年齢、同意ボタンのオプション引数にウィジェット変数を用いています。値は初期値が設定されているほか、「入力例を表示」ボタンを押すと予めこちらで用意した関数が実行されてウィジェット変数の値が書き換えられます。

また、これらのウィジェット変数の値はユーザーがGUI画面を操作して書き換えた場合も変更されます。

「確認ボタン」を押すと各ウィジェット変数の現在の値がコンソールに表示されます。

このエントリーをはてなブックマークに追加
カテゴリー: Tkinter 投稿日:

最終更新日: 2019年12月28日

コメントを残す

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