4. 3 オプションの設定と取得(configure、config、cget)
ラベルフレームはフレームの「Frame」クラスと同様に、「LavelFrame」クラスからオブジェクトを作成するときに、引数でオプションの値を設定することができます。また、フレームと同様に「Misc」クラスに特殊メソッド「__setitem__」と「__getitem__」が定義されているので、これにより、オブジェクトのキーワードインデックスでオプションの値を設定、取得することができます。「Misc」クラスにはオプションの値を設定、取得する「configure/config」メソッド、値を取得する「cget」メソッドが定義されています。サブウィンドウの作成後にこれらを用いてオプションを設定、取得することができます。
4.3.1 引数
ラベルフレームの作成時に引数でオプションを設定するには下記の書式を用います。4.1 ラベルフレームの作成を参照して下さい。
オプションは「cnf」と「**kw」引数を用いて設定します。この2つの引数のオプションの指定はメインウィンドウでの「configure」または「config」 メソッドの引数の指定と同じです。1. 3 オプションの設定と取得の 1.3.1 項と 1.3.2 項、および下記の 4.3.2 項、4.3.3 項を参照して下さい。
次のプログラムはラベルフレーム「labelframe」の作成時に引数を用いて、「幅」と「高さ」と「背景色」を設定しています。「幅」は「width」キーワード、「高さ」は「height」キーワード、「背景色」は「bg」キーワードで指定します。それぞれのキーワードのより詳しい設定例については後述する項目を参照して下さい。
import tkinter as tk | |
root = tk.Tk() | |
root.geometry('300x200+100+100') | |
labelframe = tk.LabelFrame(root, width=200, height=160) | |
labelframe['bg'] = 'red' | |
labelframe.place(x=50, y=20) | |
root.mainloop() |
このプログラムを実行すると、メインウィンドウの中に赤色のラベルフレームが表示されます。
4.3.2 キーワードインデックス
キーワードインデックスでオプションを設定、取得するには下記の書式を用います。
メインウィンドウでのキーワードインデックスと同じです。1. 3 オプションの設定と取得の 1.3.1 項を参照して下さい。
次のプログラムはキーワードインデックスを用いてラベルフレームの「幅」と「高さ」と「背景色」を設定、取得しています。「幅」は「width」キーワード、「高さ」は「height」キーワード、「背景色」は「bg」キーワードで指定します。それぞれのキーワードのより詳しい設定例については後述する項目を参照して下さい。取得した値を「print」文で出力しています。
import tkinter as tk | |
root = tk.Tk() | |
root.geometry('300x200+100+100') | |
labelframe = tk.LabelFrame(root) | |
labelframe['width'] = 200 | |
labelframe['height'] = 160 | |
labelframe['bg'] = 'red' | |
labelframe.place(x=50, y=20) | |
print(labelframe['width']) | |
print(labelframe['height']) | |
print(labelframe['bg']) | |
root.mainloop() |
このプログラムを実行すると前項と同じウィンドウが表示され、「print」出力が各キーワードに対して下記のように得られます。
160
red
4.3.3 configure、config メソッド
「configure」、「config」 メソッドでオプションを設定、取得するには下記の書式を用います。詳細は「Misc」クラスメソッドを参照して下さい。
メインウィンドウでの「configure」または「config」 メソッドの引数の指定と同じです。1. 3 オプションの設定と取得の 1.3.2 項を参照して下さい。
次のプログラムは引数「cnf」に辞書型の変数「dcnf」でオプションを指定しています。
import tkinter as tk | |
root = tk.Tk() | |
root.geometry('300x200+100+100') | |
labelframe = tk.LabelFrame(root) | |
dcnf = {'width':200, 'height':160, 'bg':'red'} | |
labelframe.config(cnf=dcnf) | |
labelframe.place(x=50, y=20) | |
root.mainloop() |
次のプログラムは引数「**kw」に辞書型の変数「dcnf」の内容を展開してオプションを指定しています。
import tkinter as tk | |
root = tk.Tk() | |
root.geometry('300x200+100+100') | |
labelframe = tk.LabelFrame(root) | |
dcnf = {'width':200, 'height':160, 'bg':'red'} | |
labelframe.config(**dcnf) | |
labelframe.place(x=50, y=20) | |
root.mainloop() |
次のプログラムは引数「**kw」にキーワードでオプションを指定しています。
import tkinter as tk | |
root = tk.Tk() | |
root.geometry('300x200+100+100') | |
labelframe = tk.LabelFrame(root) | |
labelframe.config(width=200, height=160, bg='red') | |
labelframe.place(x=50, y=20) | |
root.mainloop() |
次のプログラムは引数「cnf」と「**kw」にそれぞれ辞書型の変数「dcnf」とキーワードでオプションを指定しています。
import tkinter as tk | |
root = tk.Tk() | |
root.geometry('300x200+100+100') | |
labelframe = tk.LabelFrame(root) | |
dcnf = {'width':200, 'height':160} | |
labelframe.config(cnf=dcnf, bg='red') | |
labelframe.place(x=50, y=20) | |
root.mainloop() |
次のプログラムは引数「cnf」にオプションのキーワードを指定してオプションの値を取得しています。値を「print」文で出力しています。
import tkinter as tk | |
root = tk.Tk() | |
root.geometry('300x200+100+100') | |
labelframe = tk.LabelFrame(root, width=200, height=160, bg='red') | |
labelframe.place(x=50, y=20) | |
print(labelframe.config(cnf='width')) | |
print(labelframe.config('height')) | |
root.mainloop() |
このプログラムを実行するとウィンドウが表示され、「print」出力が下記のようにタプル形式で得られます。
('height', 'height', 'Height', <string object: '0'>, 160)
4.3.4 cget メソッド
「configure」、「config」 メソッドでオプションを取得すると、そのデータは内部情報も含めてタプル形式になります。「cget」メソッドでパラメータの設定値のみを取得をすることができます。下記の書式を用います。詳細は Miscクラスメソッド を参照して下さい。
メインウィンドウでの「cget」メソッドと同じです。1. 3 オプションの設定と取得の 1.3.3 項を参照して下さい。
次のプログラムはサブウィンドウの「幅」と「高さ」と「背景色」の設定値を「cget」メソッドで取得しています。取得した値を「print」文で出力しています。
import tkinter as tk | |
root = tk.Tk() | |
root.geometry('300x200+100+100') | |
labelframe = tk.LabelFrame(root, width=200, height=160, bg='red') | |
labelframe.place(x=50, y=20) | |
print(labelframe.cget('width')) | |
print(labelframe.cget('height')) | |
print(labelframe.cget('bg')) | |
root.mainloop() |
このプログラムを実行するとウィンドウが表示され、「print」出力が下記のように得られます。
160
red