KURORO BLOGのロゴ

このエントリーをはてなブックマークに追加
Tkinterで使われるWidget変数とは?StringVarを中心に解説!?

Tkinterで使われるWidget変数とは?StringVarを中心に解説!?

今回はTkinterで使われるWidget変数に関して、StringVarを中心に解説いたします。Widget変数の利用方法がわからない、StringVarを上手に使いたい方へおすすめです。ぜひ最後までご覧ください。

目次
  1. そもそもTkinterで使われるWidget変数とは?
    1. Tkinterの構成要素
  2. 4種類のWidget変数
    1. StringVar
    2. IntVar
    3. DoubleVar
    4. BooleanVar
  3. label Widgetを元に、Widget変数を活用してみる
  4. まとめ
  5. 参考文献
目次を開く⬇︎

そもそもTkinterで使われるWidget変数とは?

Tkinterで使われるWidget変数とは、Widgetの動作(ボタンのクリックや文字の入力など)に連動して、値(数値や文字列)を変更したい場合に使われる変数を意味します。

例えば、Widget変数を活用すると、値(数値や文字列)を初期化したり、Widgetの動作(ボタンのクリックや文字の入力など)に連動して、値(数値や文字列)を更新したりできます。

わかりにくい言葉がいくつか出てきましたね。。以下の「Tkinterの構成要素」を確認しながら、理解を深めましょう。

Tkinterの構成要素

Tkinterの構成要素として、Window, Frame, Widgetの概念が存在します。

名称説明文
Window 画像の紫色枠の部分になります。Tkinter画面全体を表します。
Frame画像内の黄緑色枠の部分になります。Widgetが1つ以上ある場合に、取りまとめるものです。
Widget青色枠で囲まれる部分になります。1つの機能を持つ最小単位 = Widgetと考えると良いでしょう。

前の章でWidget変数とは、Widgetの動作(ボタンのクリックや文字の入力など)に連動して、値(数値や文字列)を変更したい場合に使われる変数とお伝えしました。

「Tkinterの構成要素」の画像内では、青色枠の値(数字や文字列)に対して、Widget変数を利用することになります。

例えば画像内で、testという値がみられますが、Widget変数を活用することで、testの初期値をhogeという値にしたり、青色枠内をクリックすると、hogeという値へ更新したりできます。

4種類のWidget変数

Widget変数の種類としては

  • StringVar
  • IntVar
  • DoubleVar
  • BooleanVar

の4種類があります。順に見ていきましょう。

StringVar

Widget変数として、文字列を扱いたい場合に利用します。以下のような書き方を行います。

1import tkinter as tk
2
3# Windowを生成する。
4# Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
5root = tk.Tk()
6
7# Widget変数としてStringVarを利用する。
8# value : 初期値を設定するオプション。
9# 初期値として'test'をstringVarへ代入する。
10# value="test"を設定しない場合、初期値として''が代入される。
11stringVar = tk.StringVar(value="test")
12# set : 値を'test'から'hoge'へ書き換える。
13# 第一引数 : 設定したい文字列
14stringVar.set("hoge")
15# get : 値を取得する。printを利用すると、'hoge'が出力されます。
16stringVar.get()

IntVar

Widget変数として、整数を扱いたい場合に利用します。以下のような書き方を行います。

1import tkinter as tk
2
3# Windowを生成する。
4# Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
5root = tk.Tk()
6
7# Widget変数としてIntVarを利用する。
8# value : 初期値を設定するオプション。
9# 初期値として0をintVarへ代入する。
10# value=0を設定しない場合、初期値として0が代入される。
11intVar = tk.IntVar(value=0)
12# set : 値を0から1へ書き換える。
13# 第一引数 : 設定したい整数
14intVar.set(1)
15# get : 値を取得する。printを利用すると、1が出力されます。
16intVar.get()

DoubleVar

Widget変数として、浮動小数点数を扱いたい場合に利用します。以下のような書き方を行います。

1import tkinter as tk
2
3# Windowを生成する。
4# Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
5root = tk.Tk()
6
7# Widget変数としてDoubleVarを利用する。
8# value : 初期値を設定するオプション。
9# 初期値として1.1をdoubleVarへ代入する。
10# value=1.1を設定しない場合、初期値として0.0が代入される。
11doubleVar = tk.DoubleVar(value=1.1)
12# set : 値を1.1から2.2へ書き換える。
13# 第一引数 : 設定したい小数
14doubleVar.set(2.2)
15# get : 値を取得する。printを利用すると、2.2が出力されます。
16doubleVar.get()

BooleanVar

Widget変数として、Boolean値(True, False)を扱いたい場合に利用します。以下のような書き方を行います。

1import tkinter as tk
2
3# Windowを生成する。
4# Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
5root = tk.Tk()
6
7# Widget変数としてBooleanVarを利用する。
8# value : 初期値を設定するオプション。
9# 初期値としてFalseをbooleanVarへ代入する。
10# value=Falseを設定しない場合、初期値としてFalseが代入される。
11booleanVar = tk.BooleanVar(value=False)
12# set : 値をFalseからTrueへ書き換える。
13# 第一引数 : 設定したいboolean値(True or false)
14booleanVar.set(True)
15# get : 値を取得する。printを利用すると、Trueが出力されます。
16booleanVar.get()

label Widgetを元に、Widget変数を活用してみる

先ほどの章では、Widget変数の種類と書き方に関して説明しました。「label Widgetを元に、Widget変数を活用してみる」の章では、label Widgetを元に、Widget変数の使い方をお伝えいたします。

今回は

  • label Widgetの初期値(文字列)をtestとする。
  • label Widgetをクリックした場合に、値(文字列)をhogeにする。

サンプルコードをご紹介いたします。

以下のコードをPython環境で実行すると、

1import tkinter as tk
2
3class Application(tk.Frame):
4    # label Widgetのテキストに関する情報を格納する変数
5    labelTextVariable = None
6    # label Widgetに関する情報を格納する変数
7    label = None
8
9    # label Widgetのテキスト情報を変更する関数
10    def runLabelText(self, event):
11        # get() : label Widgetのテキストを取得する。
12        # print(self.labelTextVariable.get())
13        # set() : label Widgetのテキストをhogeへ変更する。
14        self.labelTextVariable.set('hoge')
15
16    # StringVar説明用に構成される関数
17    def configForStringVar(self, frame):
18        # StringVarを利用して、label Widgetで扱うテキスト情報を文字列型変数として扱う。
19        # 初期値として、testの文字列を格納する。
20        self.labelTextVariable = tk.StringVar(value="test")
21
22        # frame Widget(Frame)を親要素として、label Widgetを作成する。
23        # textvariable : テキスト情報を表示する。値を可変なself.labelTextVariableとする。
24        # background : 背景色の設定
25        # 色について : https://kuroro.blog/python/YcZ6Yh4PswqUzaQXwnG2/
26        # width : 幅の設定
27        # height : 高さの設定
28        # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
29        self.label = tk.Label(frame, textvariable=self.labelTextVariable, background='blue', width=10, height=5)
30
31        # label Widgetをクリックした場合に、関数を実行できるようにbind関数を利用する。
32        # 第一引数 : イベント内容
33        # 第二引数 : 実行する関数
34        # bindについて : https://kuroro.blog/python/eI5ApJE1wkU7bHsuwk0H/
35        self.label.bind("<ButtonPress>", self.runLabelText)
36
37        # frame Widget(Frame)を親要素とした場合に、label Widgetをどのように配置するのか?
38        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
39        self.label.pack()
40
41    def __init__(self, master=None):
42        # Windowの初期設定を行う。
43        super().__init__(master)
44
45        # Windowの画面サイズを設定する。
46        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
47        self.master.geometry("300x200")
48
49        # Windowを親要素として、frame Widget(Frame)を作成する。
50        # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
51        frame = tk.Frame(self.master)
52
53        # Windowを親要素とした場合に、frame Widget(Frame)をどのように配置するのか?
54        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
55        frame.pack()
56
57        # StringVar説明用
58        self.configForStringVar(frame)
59
60# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
61if __name__ == "__main__":
62    # Windowを生成する。
63    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
64    root = tk.Tk()
65    app = Application(master=root)
66    # Windowをループさせて、継続的にWindow表示させる。
67    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
68    app.mainloop()

以下の画像のようにlabel Widgetを描画して、testが表示されます。

次にlabel Widget内をクリックすると、以下の画像のようにlabel Widgetを描画して、hogeが表示されます。

label Widgetに関しては、【初学者必見!?】Tkinterで使われるlabelの活用方法を徹底解説でまとめていますので、詳しく知りたい方は是非ご確認ください。

bind関数に関しては、【コード付】Tkinterで使われるbindとは?bindの仕組みを交えて解説でまとめていますので、詳しく知りたい方は是非ご確認ください。

まとめ

  • Tkinterは、Window, Frame, Widgetで構成される。
  • Tkinterで使われるWidget変数とは、Widgetの動作(ボタンのクリックや文字の入力など)に連動して、値(数値や文字列)を変更したい場合に使われる変数を意味します。

参考文献