第 2 章 サブウィンドウ

◀ 2.23 システムメニュー   【目  次】  2.25 前面、背面表示 ▶

999999

 更新日:


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

2.24 Windows 固有の属性(アトリビュート)(wm_attributes、attributes)

 サブウィンドウもメインウィンドウと同様に、オペレーションシステム(OS)固有のウィンドウに関連付けられた属性(アトリビュート)を設定することができます。1.24 Windows 固有の属性(アトリビュート)を参照して下さい。

2.24.1 ウィンドウの無効化(-disabled)

 次のプログラムはサブウィンドウを作成して、無効化しています。無効化されたウィンドウは外部から閉じることができません。メインウィンドウを閉じることでプログラムは終了します。

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

2.24.2 ウィンドウの最前面表示(-topmost)

 次のプログラムはサブウィンドウを作成して、最前面表示にしています。他のウィンドウをアクティブにしても常に最前面に表示します。

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

2.24.3 クライアント領域の拡大表示(-fullscreen)

 次のプログラムはサブウィンドウのクライアント領域をスクリーン画面の全面に拡大して表示しています。このとき、クライアント領域に「bind」メソッドなどで操作を設定していないと、マウス操作ではウィンドウを閉じることができません。「Alt + F4」キーでウィンドウを閉じることができます。

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

1.24.4 ツールウインドウ(-toolwindow)

 ウィンドウを作成するとデフォルトでタイトルバーにメニューアイコンと最小化、最大化ボタン、閉じるボタンが表示されます。これはWindowsでの通常のウィンドウですが、Windowsのツールウィンドウで表示することができます。ツールウィンドウはタイトルバーに閉じるボタンのみを持つウィンドウです。タイトルバーをマウスで右クリックするとシステムメニューが表示されます。ツールウィンドウの設定は、引数に文字列「-toolwindow」を指定して値を「True」にします。「False」を指定するとウィンドウは通常の表示になります。

 次のプログラムはツールウィンドウを作成しています。

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

 プログラムを実行すると、下図のサブウィンドウがツールウィンドウとして表示されます。

A002_SubWindow_02-24

2.24.5 透明度(-alpha)

 次のプログラムは背景色が「赤色」のサブウィンドウの透明度を「0.8」に設定しています。https://www.python.org/のホームページ上に表示しています。

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

 このプログラムを実行すると下図のようにサブウィンドウの下が透けて見えるウィンドウが表示されます。

A002_SubWindow_02-24-1

2.24.6 透過色(-transparentcolor)

 次のプログラムは赤色の背景のサブウィンドウに黄色のフレームウィジェットを「tkinter.Frame」クラスから作成して配置しています。「wm_attributes」メソッドで黄色を透明色に指定しています。https://www.python.org/のホームページ上に表示しています。

1
import tkinter as tk
2
root = tk.Tk()
3
root.geometry('300x200+100+100')
4
sub = tk.Toplevel(root, width=300, height=200, bg='red')
5
sub.geometry('+240+120')
6
root.update()
7
root.wm_deiconify()
8
sub.wm_deiconify()
9
frame = tk.Frame(sub, width=220, height=120, bg='yellow')
10
frame.place(x=10,y=10)
11
sub.wm_attributes('-transparentcolor', 'yellow')
12
root.mainloop()

 このプログラムを実行すると下図のようにサブウィンドウの黄色に指定したフレームウィジェットが透明になり、サブウィンドウの背後にある背景が表示されます。

A002_SubWindow_02-24-2