第 2 章 サブウィンドウ

◀ 2. 2 オプションパラメータ   【目  次】   2. 4 サイズ ▶

999999

 更新日:


 このホームページは Amazon Kindle 本の作成中の草稿です。日々、原稿を見直しているので、内容が変わることに留意して読んで下さい。本が出版され次第、このホームページは削除されます。

2. 3 オプションの設定と取得(configure、config、cget)

 サブウィンドウはメインウィンドウと異なり、「Toplevel」クラスからオブジェクトを作成するときに、引数でオプションの値を設定することができます。また、メインウィンドウと同様に、「Misc」クラスに特殊メソッド「__setitem__」と「__getitem__」が定義されているので、これにより、オブジェクトのキーワードインデックスでオプションの値を設定、取得することができます。「Misc」クラスにはオプションの値を設定、取得する「configure/config」メソッド、値を取得する「cget」メソッドが定義されています。サブウィンドウの作成後にこれらを用いてオプションを設定、取得することができます。

2.3.1 引数

 サブウィンドウの作成時に引数でオプションを設定するには下記の書式を用います。2.1 サブウィンドウの作成を参照して下さい。

tkinter.Toplevel(master, cnf={}, **kw)

オプションは「cnf」と「**kw」引数を用いて設定します。この2つの引数のオプションの指定はメインウィンドウでの「configure」または「config」 メソッドの引数の指定と同じです。1. 3 オプションの設定と取得の 1.3.1 項と 1.3.2 項、および下記の 2.3.2 項、2.3.3 項を参照して下さい。

 次のプログラムはサブウィンドウ「sub」の作成時に引数を用いてウィンドウの「幅」と「高さ」と「背景色」を設定しています。「幅」は「width」キーワード、「高さ」は「height」キーワード、「背景色」は「bg」キーワードで指定します。メインウィンドウと区別するために、背景色をメインウィンドウは青色、サブウィンドウは赤色にしています。それぞれのキーワードのより詳しい設定例については後述する項目を参照して下さい。

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200, bg='blue')
4
root.geometry('+100+100')
5
sub = tk.Toplevel(root, width=300, height=200)
6
sub['bg'] = 'red'
7
sub.geometry('+140+120')
8
root.update()
9
root.wm_deiconify()
10
sub.wm_deiconify()
11
root.mainloop()

 このプログラムを実行すると、青色のメインウィンドウの前面に赤色のサブウィンドウが表示されます。

A002_SubWindow_02-3

2.3.2 キーワードインデックス

 キーワードインデックスでオプションを設定、取得するには下記の書式を用います。

object[オプションキーワード]

メインウィンドウでのキーワードインデックスと同じです。1. 3 オプションの設定と取得の 1.3.1 項を参照して下さい。

 次のプログラムはキーワードインデックスを用いてサブウィンドウの「幅」と「高さ」と「背景色」を設定、取得しています。「幅」は「width」キーワード、「高さ」は「height」キーワード、「背景色」は「bg」キーワードで指定します。それぞれのキーワードのより詳しい設定例については後述する項目を参照して下さい。取得した値を「print」文で出力しています。

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200, bg='blue')
4
root.geometry('+100+100')
5
sub = tk.Toplevel(root)
6
sub['width'] = 300
7
sub['height'] = 200
8
sub['bg'] = 'red'
9
sub.geometry('+140+120')
10
root.update()
11
root.wm_deiconify()
12
sub.wm_deiconify()
13
print(sub['width'])
14
print(sub['height'])
15
print(sub['bg'])
16
root.mainloop()

 このプログラムを実行すると前項と同じウィンドウが表示され、「print」出力が各キーワードに対して下記のように得られます。

300
200
red

2.3.3 configure、config メソッド

 「configure」、「config」 メソッドでオプションを設定、取得するには下記の書式を用います。詳細は「Misc」クラスメソッドを参照して下さい。

object.configure(cnf=None, **kw)
object.config(cnf=None, **kw)

メインウィンドウでの「configure」または「config」 メソッドの引数の指定と同じです。1. 3 オプションの設定と取得の 1.3.2 項を参照して下さい。

 次のプログラムは引数「cnf」に辞書型の変数「dcnf」でオプションを指定しています。

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200, bg='blue')
4
root.geometry('+100+100')
5
sub = tk.Toplevel(root)
6
dcnf = {'width':300, 'height':200, 'bg':'red'}
7
sub.config(cnf=dcnf)
8
sub.geometry('+140+120')
9
root.update()
10
root.wm_deiconify()
11
sub.wm_deiconify()
12
root.mainloop()

 次のプログラムは引数「**kw」に辞書型の変数「dcnf」の内容を展開してオプションを指定しています。

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200, bg='blue')
4
root.geometry('+100+100')
5
sub = tk.Toplevel(root)
6
dcnf = {'width':300, 'height':200, 'bg':'red'}
7
sub.config(**dcnf)
8
sub.geometry('+140+120')
9
root.update()
10
root.wm_deiconify()
11
sub.wm_deiconify()
12
root.mainloop()

 次のプログラムは引数「**kw」にキーワードでオプションを指定しています。

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200, bg='blue')
4
root.geometry('+100+100')
5
sub = tk.Toplevel(root)
6
sub.config(width=300, height=200, bg='red')
7
sub.geometry('+140+120')
8
root.update()
9
root.wm_deiconify()
10
sub.wm_deiconify()
11
root.mainloop()

 次のプログラムは引数「cnf」と「**kw」にそれぞれ辞書型の変数「dcnf」とキーワードでオプションを指定しています。

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200, bg='blue')
4
root.geometry('+100+100')
5
sub = tk.Toplevel(root)
6
dcnf = {'width':300, 'height':200}
7
sub.config(cnf=dcnf, bg='red')
8
sub.geometry('+140+120')
9
root.update()
10
root.wm_deiconify()
11
sub.wm_deiconify()
12
root.mainloop()

 上記の4つプログラムを実行すると 2.3.1 項と同じウィンドウが表示されます。

 次のプログラムは引数「cnf」にオプションのキーワードを指定してオプションの値を取得しています。値を「print」文で出力しています。

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200, bg='blue')
4
root.geometry('+100+100')
5
sub = tk.Toplevel(root)
6
sub.config(width=300, height=200, bg='red')
7
sub.geometry('+140+120')
8
root.update()
9
root.wm_deiconify()
10
sub.wm_deiconify()
11
print(sub.config(cnf='width'))
12
print(sub.config('height'))
13
root.mainloop()

このプログラムを実行するとウィンドウが表示され、「print」出力が下記のようにタプル形式で得られます。

('width', 'width', 'Width', <string object: '0'>, 300)
('height', 'height', 'Height', <string object: '0'>, 200)

2.3.4 cget メソッド

 「configure」、「config」 メソッドでオプションを取得すると、そのデータは内部情報も含めてタプル形式になります。「cget」メソッドでパラメータの設定値のみを取得をすることができます。下記の書式を用います。詳細は Miscクラスメソッド を参照して下さい。

object.cget(key)

メインウィンドウでの「cget」メソッドと同じです。1. 3 オプションの設定と取得の 1.3.3 項を参照して下さい。

 次のプログラムはサブウィンドウの「幅」と「高さ」と「背景色」の設定値を「cget」メソッドで取得しています。取得した値を「print」文で出力しています。

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200, bg='blue')
4
root.geometry('+100+100')
5
sub = tk.Toplevel(root, width=300, height=200, bg='red')
6
sub.geometry('+140+120')
7
root.update()
8
root.wm_deiconify()
9
sub.wm_deiconify()
10
print(sub.cget('width'))
11
print(sub.cget('height'))
12
print(sub.cget('bg'))
13
root.mainloop()

このプログラムを実行するとウィンドウが表示され、「print」出力が下記のように得られます。

300
200
red