メインウィンドウ

このページではTkinterのメインウィンドウについて解説します。

メインウィンドウと様々な設定

ウィジェットのページで解説しましたが、Tkでメインウィンドウと呼ばれるベースとなるウィンドウを生成することが可能です。これまで以下のようなタイトルだけのウィンドウを作成してきました。

from tkinter import Tk

# メインウィンドウ生成
root = Tk()

# メインウィンドウの設定
root.title("タイトル")

# イベントループの開始
root.mainloop()

実際にGUIアプリケーションを作成する場合、様々なウィジェットを配置するために大きさや座標、背景色、透過等が設定したくなると思います。順番に解説していきます。

ウィンドウのサイズと位置の指定

Tkで生成したメインウィンドウのgeometryメソッドでウィンドウ生成時の大きさや位置を指定することが可能です。引数に以下の書式の文字列を指定します。

geometryの引数文字列
横幅x高さ±x座標±y座標

なお、ウィンドウのサイズと位置関係は以下の図のように定義されています。また、座標位置にマイナスを指定すると逆側に表示することができます。

例えば、横幅x高さのサイズが360x240のウィンドウを、座標(60, 30)に生成したい場合、以下のようになります。

root.geometry("360x240+60+30")

座標サイズの補足ですが、以下のようなイメージです。

以下のコードを実行すると指定したサイズ位置のウィンドウが生成されることが確認できます。

from tkinter import Tk

# メインウィンドウ生成
root = Tk()

# メインウィンドウの設定
root.title("タイトル")
root.geometry("360x240+60+30")

# イベントループの開始
root.mainloop()

実行結果

なお、表示位置は省略することも可能で、その場合は以下のようになります。

root.geometry("360x240")

サイズ変更の禁止

デフォルトではメインウィンドウのサイズをウィンドの角をドラッグアンドドロップすることで変更することが可能ですが、これを禁止することもできます。resizableメソッドで可否をboolで指定します。

root.resizable(横幅の変更可否, 縦幅の変更可否)

例えば、横幅、縦幅ともに変更を不許可としたい場合は以下のようになります。

from tkinter import Tk

# メインウィンドウ生成
root = Tk()

# メインウィンドウの設定
root.title("タイトル")
root.geometry("360x240+60+30")
root.resizable(False, False)

# イベントループの開始
root.mainloop()


実行すると、マウスで画面サイズの変更ができなくなることが確認できます。

背景色の指定

以下の書式で16進数表記で背景色を指定することができます。

root.configure(bg='#RRGGBB')

例えば、画面色を少し薄い青#E0E0FFにしたい場合は以下のように記述します。

from tkinter import Tk

# メインウィンドウ生成
root = Tk()

# メインウィンドウの設定
root.title("タイトル")
root.geometry("360x240+60+30")
root.configure(bg='#E0E0FF')

# イベントループの開始
root.mainloop()

実行結果

ウィンドウの透過

root.attributes('-alpha', α値)

例えばαに0.5を指定して半透明にする場合は以下のようになります。

from tkinter import Tk

# メインウィンドウ生成
root = Tk()

# メインウィンドウの設定
root.title("タイトル")
root.geometry("360x240+60+30")
root.attributes('-alpha', 0.5)

# イベントループの開始
root.mainloop()

実行結果