Tkinter:トップレベルウィンドウを作成する

old residential building in summer city

pythonの標準GUIライブラリ「Tkinter」を利用したアプリケーション開発について,トップレベルウィンドウの表示と設定方法についてまとめています。

私的備忘録としてまとめたものですが,アプリ開発の参考になれば幸いです。

(本ページにて紹介しているコードはgithubにて公開しています。)

DataAnalOji.hatena.sample/python_samples/tkinter/00_root_window.py at master · Data-Anal-Ojisan/DataAnalOji.hatena.sample
samples for my own blog. Contribute to Data-Anal-Ojisan/DataAnalOji.hatena.sample development by creating an account on GitHub.

基本形

設定を何も行っていない,最も基本形となるトップレベルウィンドウを呼び出すプログラムです。

初めにtkinter.Tk() のインスタンスを生成することで,トップレベルウィンドウを作成します。

mainloop() はその名の通り「ループ」処理を行うメソッドで,アプリケーション起動のループ処理(加えてイベント処理)を行います。mainloop() を実行しない場合,アプリケーションは起動せず処理が終了してしまいます。

import tkinter as tk

# 基本形
root = tk.Tk()   # トップレベルウィンドウを作成する
root.mainloop()  # アプリケーション起動を維持

タイトル変更

title() メソッドを利用することで,ウィンドウ左上に表示されるタイトルを変更することができます。

タイトルを設定していない場合,デフォルトで「tk」というタイトルが与えられます。

import tkinter as tk

# タイトル変更
root = tk.Tk()
root.title('SampleApp')  # アプリケーションタイトルを変更する
root.mainloop()

ウィンドウサイズ変更

geometry() メソッドを利用することで,アプリケーション起動時の初期ウィンドウサイズを変更することができます。

あくまで初期サイズの変更であり,サイズを固定している訳ではないので,マウスを利用したウィンドウサイズの変更が可能です。

import tkinter as tk

# ウィンドウサイズ変更
root = tk.Tk()
root.geometry('400x400')  # ウィンドウサイズを指定する
root.mainloop()

ウィンドウサイズ固定

resizable() メソッドを利用することで,アプリケーション起動後のウィンドウサイズ変更を無効化することができます。

height=False とすることで,高さ方向のウィンドウサイズ変更が無効化され,width=False とすることで,幅方向のウィンドウサイズ変更を無効化することができます。

geometry() メソッドと組み合わせることで,指定したウィンドウサイズからサイズ変更をすることができないようなアプリケーションを開発すること可能です。

import tkinter as tk

# ウィンドウサイズ固定
root = tk.Tk()
root.resizable(height=False, width=False)  # ウィンドウサイズを固定する
root.mainloop()

# ウィンドウサイズ変更*固定
root = tk.Tk()
root.geometry('400x400')                   # ウィンドウサイズを指定する
root.resizable(height=False, width=False)  # ウィンドウサイズを固定する
root.mainloop()

最小ウィンドウサイズ指定

minsize() メソッドを利用することで,ウィンドウの最小サイズを指定することができます。

最小ウィンドウサイズを指定しているだけなので,マウスを利用したウィンドウサイズの変更は有効です。

import tkinter as tk

# 最小ウィンドウサイズ指定
root = tk.Tk()
root.minsize(height=200, width=200)  # 最小ウィンドウサイズを指定する
root.mainloop()

最大ウィンドウサイズ指定

maxsize() メソッドを利用することで,ウィンドウの最大サイズを指定することができます。

最大ウィンドウサイズを指定しているだけなので,マウスを利用したウィンドウサイズの変更は有効です。

import tkinter as tk

# 最大ウィンドウサイズ指定
root = tk.Tk()
root.maxsize(height=200, width=200)  # 最大ウィンドウサイズを指定する
root.mainloop()

背景色変更

configure() メソッドを利用することで,ウィンドウの背景色を変更することが可能です。

background の代わりに bg を利用することができます。

RGB値を以下の形式で与えることで,表示色を指定します。

‘#rgb’各色4 bit
‘#rrggbb’各色8 bit
‘#rrrgggbbb各色12 bit

例えば,‘#fff’ は白色を,‘#00ff00’ は緑色を,‘#fff000000’ は赤色をそれぞれ意味します。

一般的な色名称を直接与えることで,表示色を指定することも可能です。’white’, ‘black’, ‘red’, ‘blue’, ‘green’ ‘yellow’ などが利用可能です。

import tkinter as tk

# 背景色変更
root = tk.Tk()
root.configure(background='#FFF000000')  # 背景色を指定する
root.mainloop()

ウィンドウ枠追加

ウィンドウ枠のスタイル一覧

configure() メソッドを利用することで,ウィンドウに外枠を追加することができます。

relief オプションでウィンドウ枠のスタイルを指定します。デフォルトのスタイルは ‘flat’ です。上図の通り,6つのスタイルが用意されています。

bd オプションでウィンドウ枠の幅を指定します。デフォルト値は 0 (=枠無) となっており,枠表示のために0以上の値を指定する必要があります。

import tkinter as tk

# ウィンドウ枠追加
root = tk.Tk()
root.configure(relief='ridge', bd=10)  # ウィンドウ枠を追加する
root.mainloop()

アイコン変更

iconbitmap() メソッドを利用することで,ウィンドウ左上端に表示されるアイコンを変更することができます。

今回の例では,上図左の画像を .ico ファイルに変換したものをアイコンに指定しています。上図右のように,デフォルトの青い羽根のアイコンから指定したアイコンに変更されています。

default オプションから,.ico ファイルのパスを指定することでアイコンの変更を行います。

任意の画像を .ico ファイルに変換してくれるwebサービスは複数存在しますので,好みのサイトを利用して .ico を用意してください。

import tkinter as tk

# アイコン変更
root = tk.Tk()
icon_path = 'common/python.ico'     # *.ico ファイルのパス
root.iconbitmap(default=icon_path)  # アイコンを変更する
root.mainloop()

コメント