第 1 章 メインウィンドウ

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

999999

 更新日:


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

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

 オペレーションシステム(OS)固有のウィンドウに関連付けられた属性(アトリビュート)を設定することができます。「wm_attributes」または「attributes」メソッドで引数に属性を設定する文字列と値を指定します。下記の書式を用います。詳細は Wm クラスメソッドを参照して下さい。

object.wm_attributes(*args)
object.attributes(*args)

 このメソッドでは引数に、以下の属性を設定することができます。

-disabled
 ウィンドウを有効または無効にします。
-topmost
 ウィンドウを最前面に表示します。
-fullscreen
 ウィンドウのクライアント領域をスクリーンの全面に拡大します。
-toolwindow
 ウィンドウをツールウィンドウで表示します。
-alpha
 ウィンドウの透過度を設定します。
-transparentcolor
 ウィンドウのクライアント領域の指定した色を透明にします。

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

ウィンドウを作成するとデフォルトで外部入力を受け付ける状態になっています。これを無効にすることができます。ウィンドウが無効になるとウィンドウ上での全ての外部入力を受け付けなくなり、タイトルバーでの閉じる操作もできなくなります。引数に文字列「-disabled」を指定して値を「True」にします。無効化を解除するには値を「False」にします。

 次のプログラムはウィンドウを作成して、無効化しています。無効化されたウィンドウは外部から閉じることができません。Python の IDLE Shell で起動させている場合は「Restart Shell」を実行するか、他の Python プログラムを起動することで、実行中のプログラムは終了します。コマンドプロンプトが表示されている場合は、コマンドプロンプトのウィンドウを閉じることでプログラムは終了します。

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200)
4
root.wm_attributes('-disabled', True)
5
root.mainloop()

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

 ウィンドウが作成されるとデフォルトで他のウィンドウの最前面に表示されます。他のウィンドウがアクティブになるとその背面に隠れます。このウィンドウの表示を他のウィンドウの状態によらず常に最前面に表示するようにできます。引数に文字列「-topmost」を指定して値を「True」にします。設定を解除するには値を「False」にします。

 このコマンドで最前面表示されているウィンドウは必ずしもアクティブ(フォーカスを持っている)とは限りません。アクティブにするには、マウスでクリックするかアプリケーションでフォーカスを設定する必要があります。

 複数のウィンドウに「-topmost」に「True」を指定している場合、ウィンドウは常に最前面表示になりません。常に最前面表示したいウィンドウ以外の、他のウィンドウの「-topmost」の指定を「False」にして解除する必要があります。

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

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200)
4
root.wm_attributes('-topmost', True)
5
root.mainloop()

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

 ウィンドウのクライアント領域をスクリーン画面の全面に拡大して表示することができます。引数に文字列「-fullscreen」を指定して値を「True」にします。「False」を指定するとウィンドウは通常の表示になります。

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

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200)
4
root.wm_attributes('-fullscreen', True)
5
root.mainloop()

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

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

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

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200)
4
root.wm_attributes('-toolwindow', True)
5
root.mainloop()

 プログラムを実行すると、下図のウィンドウが表示されます。

A001_MainWindow_01-24

1.24.5 透明度(-alpha)

 ウィンドウ全体が透けて見えるようにすることができます。引数に文字列「-alpha」を指定して値に設定する透明度を「0.0」から「1.0」の数値で指定します。「0.0」は完全な透明で「1.0」は透明でないウィンドウです。透明度はウィンドウ上に配置されたウィジェットを含めてウィンドウ全体に適用されます。

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

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200, bg='red')
4
root.title('NewWindowTitle')
5
root.wm_attributes('-alpha', 0.8)
6
root.mainloop()

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

A001_MainWindow_01-24-1

1.24.6 透過色(-transparentcolor)

 ウィンドウの特定の色を透明にして背後にある背景を表示することができます。引数に文字列「-transparentcolor」を指定して値に透明にする色を文字列で指定します。色の透過はウィンドウ上に配置されたウィジェットを含めてウィンドウのクライアント領域に表示される色に対して適用されます。

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

1
import tkinter as tk
2
root = tk.Tk()
3
root.config(width=300, height=200, bg='blue')
4
root.title('NewWindowTitle')
5
frame = tk.Frame(root, width=220, height=120, bg='red')
6
frame.place(x=10,y=10)
7
root.wm_attributes('-transparentcolor', 'red')
8
root.mainloop()

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

A001_MainWindow_01-24-2