どん底から這い上がるまでの記録

どん底から這い上がりたいけど這い上がれない人がいろいろ書くブログ(主にプログラミング)

Labelを使う

今回はラベルを使ってみます。

ラベルを使うとテキストや画像をwidget上に表示することができるようになります。

 

ボタンが押されたらラベル上のテキストを変更する

まずは、メインウィンドウを作ります。

 

import tkinter as tk


class App(tk.Tk):
    def __init__(self, title="tkinter", position=(0,0,0,0), resize=(0, 0), icon=None):
        super(App, self).__init__()
        self.title(title)
        self.geometry("{}x{}+{}+{}".format(*position))
        self.resizable(*resize)
        self.iconbitmap(icon)
        self.set_widgets()

    def set_widgets(self):
        pass

    def run(self):
        self.mainloop()


if __name__ == "__main__":
    app = App(title="Label Example", position=(300, 300, 300, 100))
    app.run()

 

上の雛形にwidgetを貼り付けていきます。

set_widgetsメソッドでwidgetの設定をします。

 

Label

Labelの使い方は、

  widget = Label(parent, **options)

今回はメインウィンドウに貼り付けるのでparentはself、optionではtextvariableを使います。

textvariableにはStringVarオブジェクトを渡します。

テキストの内容を設定するにはsetメソッド、取得するにはgetメソッドを使います。

以下のプログラムではボタンが押されるたびに、turnの値を0と1交互に変えています。

テキストの内容を変更するにはStringVarのsetメソッドを使うだけです。

    def set_widgets(self):
        self.turn = 1
        self.var = tk.StringVar()
        self.var.set(self.out())
        ### Label 3##
        label = tk.Label(self, textvariable=self.var)
        label.pack(pady=(30, 50))
        ### Button ###
        submit_button = tk.Button(self, text="submit", command=self.change_turn)
        submit_button.pack()

    def change_turn(self):
        self.turn = self.turn ^ 1
        self.var.set(self.out())
        print(self.var.get())

    def out(self):
        return "Turn {}".format(self.turn)