pythonのtkinterでラベルの配置

コンピュータ

tkinterのウィジェット(Label,ButtonなどGUIを構成する部品。別の文化ではコントロールとも)の配置を確認するためラベルを作成してみます。

# tkinter02.py

# ラベルのサンプル

import tkinter as tk

class MyFrame(tk.Frame):
    def __init__(self, master = None):
        super().__init__(master)

        self.master.title("タイトル")
        self.master.geometry("640x480")

        label_str = tk.StringVar(master)
        label_str.set("ラベル")
        # ラベル
        self.label1 = tk.Label(master,
                            bg = 'skyblue', # 背景色
                            fg = 'black', # 前景色
                            anchor = tk.NW, # 左上
                            padx = 10, # 文字余白x
                            pady = 10, # 文字余白y
                            font=('', 20), # フォントサイズ
                            textvariable = label_str)
        # ラベルを配置
        self.label1.pack()
        # ラベルの位置(幅高さ)を指定
        self.label1.place(relwidth=1.0, # 親の幅の割合(100%)で指定
                          relheight=0.5, # 親の高さの割合(50%)で指定
                          x=0,
                          y=0,)
        # ラベルの文字変更
        label_str.set("文字列")

if __name__ == "__main__":
    root = tk.Tk()
    frame1 = MyFrame(master = root)
    frame1.mainloop()

子ウィジェットの生成時に所属する親ウィジェットを指定しています。配置する場合.pack()する必要があり、実行しないとラベルがウィジェットが表示されませんでした。

サンプルでは表示する文字列を後から変更するようにtextvariabletk.StringVar()のインスタンスを指定しています。後から変更しない場合はtext='文字列'で指定できるようです。

ラベルを配置する位置を指定する際、幅と高さを親ウィジェットの幅と高さの割合を指定するrelwidthrelheightを使っています。ウィンドウサイズを変更すると割合を維持するように幅と高さが変動します。

各種プロパティを省略することも出来ますが、省略した場合のデフォルト設定が他の文化のそれと大分異なるので、動作確認をして文化に慣れるか、省略せずに指定する必要がありそうです。

コメント