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

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

【tkinter】LabelFrameを使ってみる

 

tkinterのLabelFrameの使い方について紹介します。

LabelFrameはFrameと同じようにwidgetをまとめて入れる入れ物のようなものですが、特徴としてLabelFrameに入れたwidgetの周りに枠線とFrame名を設定して表示することができます。

 

この記事でやること。

  • 基本的な使い方
  • オプションの設定方法

 

 

Widgetの作り方

tkinterでアプリケーションの開発をするときwidget(部品)を組み合わせて構築していきます。

widgetの作り方は次のとおりです。

 widget = ヴィジット名(parent, **options)

基本的にヴィジット名には部品と同じ名前が付けられています。例えば、ボタンだとButton、ラベルだとLabelといった感じです。

 (例)button = Button(parent, **options)

引数のparentは親ヴィジットと呼ばれるものでその部品の配置先を指定し、optionsでその部品の設定を行います。

LabelFrameも同様に

 widget = LabelFrame(parent, **options)

として作成します。

LabelFrameを作る

それでは、実際にLabelFrameを作ってみましょう。

まずはLabelFrameを配置するためのメインウィンドウを作成します。

import tkinter as tk

root = tk.Tk()
root.mainloop()

上のコードを実行すると、下のウィンドウが起動します。このウィンドウにLabelFrameを配置します。

f:id:pytry3g:20200102190200p:plain

 

root = tk.Tk()root.mainloop()の間にLabelFrameを作成するためのコードを追加します。

Widgetの作り方で説明したようにLabelFrameを作成します。

labelframe = tk.LabelFrame(root, width=300, height=300, text="You")
labelframe.pack(ipadx=10, ipady=10, padx=50, pady=50)

上記のコードを追加して、プログラムを実行すると下のウィンドウが起動します。

f:id:pytry3g:20200115201033p:plain

枠線と設定したFrame名が表示されました。

次に、作成したLabelFrameにCanvasを入れてみます。

canvas = tk.Canvas(labelframe, width=100, height=100, bg="red")
canvas.pack()

作成したLabelFrameの下に上記のコードを追加してプログラムを実行すると、

f:id:pytry3g:20200115202343p:plain

Canvasが枠線の中に入って表示されました。

オプションについて

オプションについて紹介していきます。

背景色

LabelFrameの中の色をbgで設定することができます。以下のコードでは白色に設定しています。

labelframe = tk.LabelFrame(
    root, width=300, height=300, text="You", bg="white"
)
labelframe.pack(ipadx=10, ipady=10, padx=50, pady=50)

設定できる色についてはこちらのページを参考にしてみてください。(※少し試してみましたが、ここに記載されている色すべてが設定できるみたいではないみたいです。)

枠線の太さ

LabelFrameの枠線の太さはbdで設定できます。デフォルトでは2に設定されています。

labelframe = tk.LabelFrame(
    root, width=300, height=300, text="You", bg="white",
    bd=10
)
labelframe.pack(ipadx=10, ipady=10, padx=50, pady=50)

マウスポインタの見た目を変える

cursorを設定することで、LabelFrameの上にマウスポインタがあるときに、そのマウスポインタの見た目を変えることができます。

例えば、cursordotに設定するとLabelFrameの上にマウスポインタがあるときにマウスポインタが黒い点で表示されます。

labelframe = tk.LabelFrame(
    root, width=300, height=300, text="You", bg="white",
    bd=10, cursor="dot"
)
labelframe.pack(ipadx=10, ipady=10, padx=50, pady=50)

cursorは他にも多くの種類を設定することができます。詳細は以下のリンクを見てください。

Python - Tkinter Cursors - Tutorialspoint

境目の見た目を変える

reliefを設定することでLabelFrameの境目の見た目を変更することができます。

reliefはデフォルトでflatに設定されています。reliefはオプションとして、sunken, raised, groove, ridgeがあります。

試しにreliefgrooveにしてプログラムを実行すると下のウィンドウが起動します。

labelframe = tk.LabelFrame(
    root, width=300, height=300, text="You", bg="white",
    bd=5, cursor="dot", relief="groove"
)
labelframe.pack(ipadx=10, ipady=10, padx=50, pady=50)

f:id:pytry3g:20200115211009p:plain

Frame名の表示位置

Frame名の表示位置を設定するにはlabelanchorで指定します。デフォルトではNW(左上)になっています。

設定できる値はe, en, n, ne, nw, s, se, sw, w, wn, wsです。

今回はe(東)を設定してプログラムを実行してみます。

labelframe = tk.LabelFrame(
    root, width=300, height=300, text="You", bg="white",
    bd=5, cursor="dot", relief="groove",
    labelanchor="e"
)
labelframe.pack(ipadx=10, ipady=10, padx=50, pady=50)

上記コードにしてプログラムを実行すると下のウィンドウが起動します。

f:id:pytry3g:20200115211327p:plain

水平、垂直のpadding

LabelFrameとLabelFrameに入れたwidgetの水平方向と垂直方向の間隔をそれぞれpadxpadyで設定することができます。

labelframe = tk.LabelFrame(
    root, width=300, height=300, text="You", bg="white",
    bd=5, cursor="dot", relief="groove",
    labelanchor="sw", padx=30, pady=50
)
labelframe.pack(ipadx=10, ipady=10, padx=50, pady=50)

f:id:pytry3g:20200115211951p:plain

Flame名の見た目を変える

Frame名の見た目は文字の色(fg)とフォント(font)の設定をすることができます。

labelframe = tk.LabelFrame(
    root, width=300, height=300, text="You", bg="white",
    bd=5, cursor="dot", relief="groove",
    labelanchor="sw", padx=30, pady=50,
    fg="blue", font=("arial", 14, "bold")
)
labelframe.pack(ipadx=10, ipady=10, padx=50, pady=50)

上記のコードに変更して、プログラムを実行すると下のウィンドウが起動します。

f:id:pytry3g:20200115214047p:plain

おわり

LabelFrameの使い方について簡単にまとめてみました。

他のwidgetの使い方について知りたい方はこちらへどうぞ。

参考記事 - The Tkinter LabelFrame Widget