【Python特化】おすすめのオンラインプログラミングスクール

【Python】tkinterの使い方&ウィジェット一覧表|GUIデスクトップアプリ開発

Pythonの標準ライブラリであるtkinterから簡易なデスクトップアプリ開発に挑戦する人も多いと思います。

ここでは、以下の悩みをお持ちの方に読み進めていただきたいです。

本記事の要点
  • コマンドプロンプトが使いづらく自作ツールを作成したい
  • tkinterによるデスクトップアプリ開発に挑戦したい
  • tkinterの公式ドキュメントが分かりづらい

これらの悩みを解決しながら、具体的なtkinterの使い方と各ウィジェットを解説します。

目次

tkinterとは

tkinterは、Pythonに標準で搭載されているGUI(Graphical User Interface)ライブラリです。

PythonからTcl/TkというGUIツールキットを使えるようにしたインターフェースです。

ボタンやラベル/テキストボックスなどウィジェットを使い、デスクトップアプリケーションを作成できます。

Python3.xではimport tkinterで利用します(Python2.x:import Tkinter)。

tkinterの特徴

以下は、tkinterの特徴になります。

スクロールできます
特徴概要
標準ライブラリPython標準搭載のためインストール不要
クロスプラットフォームWindowsOS/macOS/Linuxなどで動作
シンプルな記述少量なコードでGUI開発可能
豊富なウィジェット多彩なウィジェット提供
イベント駆動型イベントに応じた処理可能
tkinterの特徴

特にPython初学者の場合、初めてのデスクトップ用ライブラリとしてtkinterは利用しやすく学ぶ上でもおすすめです。

tkinterによる最小構成GUIデスクトップアプリ

ここでは、最小構成のGUIアプリを記載します。

import tkinter as tk
root = tk.Tk() # メインウィンドウの作成
root.title("サンプルGUI") # タイトル設定
root.geometry("300x200") # ウィンドウサイズ設定
label = tk.Label(root, text="こんにちは、tkinter!")
label.pack()
root.mainloop() # イベントループ開始

最小構成で実行したアプリをもとに様々なウィジェット配置とイベント関数を追加することで、様々なデスクトップアプリを実現できます。

tkinter/ttk/ttkbootstrapについて

tkinterの派生ライブラリとして、ttkとttkbootstrapが存在します。

また、以下の項目において比較表を参考に利用してみてください。

スクロールできます
比較項目tkinterttkttkbootstrap
デザイン性
カスタマイズ性
ウィジェットの種類
ドキュメント/情報量
実装の手軽さ
モダン対応
tkinter/ttk/ttkbootstrapの比較表

tkinterの使い方

ここでは、tkinterを利用する上での基本的な使い方を解説します。

tkinterの使い方
  • tkinterによるレイアウト(ウィジェット配置)方法
  • tkinterの代表的なウィジェット

特にウィジェット配置を的確に実施できないとレイアウトが崩れ、開発のモチベーションも下がります。

整理されたレイアウトを実現するために理解しておくとよいでしょう。

tkinterによるレイアウト(ウィジェット配置)方法

tkinterには、3種類のレイアウト(ウィジェット配置)方法があります。

スクロールできます
メソッド説明
.pack()自動的に上下または左右に詰めて配置
.grid()行・列を指定して配置、表形式のレイアウトに最適
.place()ピクセル単位での絶対位置指定
レイアウト方法

.grid()によるレイアウト方法は行列を指定し配置するため、ウィンドウサイズに合わせ表形式のレイアウトが実現できておすすめです。

.pack()

.pack()は、tkinterでウィジェットをウィンドウに配置するためのレイアウトマネージャーの1つです。

ウィジェットを上・下・左・右方向に順番に積み重ねる形で自動配置します。

シンプルなUIに向いており、引数を使って配置位置や余白などを細かく調整できます。

スクロールできます
引数名説明
sideウィジェットを配置する方角(top、bottom、left、right)
fillウィジェットをどの方向に拡張するか(x、y、both、none)
expand空きスペースをウィジェットに与えるか(Trueで拡張される)
padxウィジェットの左右に追加する余白(ピクセル単位)
padyウィジェットの上下に追加する余白(ピクセル単位)
ipadxウィジェット内部の左右に追加する余白(ピクセル単位)
ipadyウィジェット内部の上下に追加する余白(ピクセル単位)
anchor配置位置を細かく指定(例:n、ne、center など)
before指定ウィジェットの前に配置
after指定ウィジェットの後に配置
in_配置先ウィジェットを指定(通常は親ウィジェット)
.pack()の主な引数一覧表
import tkinter as tk

root = tk.Tk()

label = tk.Label(root, text="こんにちは", bg="lightblue")
label.pack(side="top", fill="x", padx=10, pady=5, ipadx=20, ipady=10, anchor="n")

root.mainloop()
スクロールできます
使用箇所引数名説明
side=”top”side上方向に配置
fill=”x”fill横方向にウィジェットを広げる
padx=10padx左右に10ピクセルの外部余白
pady=5pady上下に5ピクセルの外部余白
ipadx=20ipadx内側左右に20ピクセルの余白
ipady=10ipady内側上下に10ピクセルの余白
anchor=”n”anchor上寄せ(north)で配置

.grid()

.grid()は、ウィジェットを行(row)と列(column)の格子状レイアウトで配置する方法です。

細かい位置指定や、ウィジェットの結合・余白調整などが可能で、複雑なUIに向いています。

他のレイアウト(例:.pack())と同じ親ウィジェット内では併用不可です。

スクロールできます
引数名説明
row配置する行番号(0から始まる)
column配置する列番号(0から始まる)
rowspan複数行にまたがって配置する
columnspan複数列にまたがって配置する
stickyウィジェットをセル内のどこに揃えるか(例:n、e、w、sなど)
padxセルとウィジェットの左右の外部余白
padyセルとウィジェットの上下の外部余白
ipadxウィジェットの内部左右の余白
ipadyウィジェットの内部上下の余白
in_配置先の親ウィジェットを明示的に指定
.grid()の主な引数一覧表
import tkinter as tk

root = tk.Tk()

label1 = tk.Label(root, text="ユーザー名")
label1.grid(row=0, column=0, sticky="e", padx=5, pady=5)

entry1 = tk.Entry(root)
entry1.grid(row=0, column=1, padx=5, pady=5, ipadx=20)

root.mainloop()
スクロールできます
使用箇所引数名説明
row=0row最初の行に配置
column=0/column=1column左(0列目)と右(1列目)に配置
sticky=”e”stickyセル内で右寄せ(east)に配置
padx=5, pady=5padx, pady各方向に5ピクセルの外部余白
ipadx=20ipadx内側左右に20ピクセルの余白(エントリーフィールドの幅)

.grid()は柔軟性が高いため、フォームや設定画面のように多要素を整然と並べたいUIに特に有効です。

さらに複雑なグリッド制御(行・列の比率)には.grid_rowconfigure()や.grid_columnconfigure()も活用できます。

.grid_rowconfigure()及び.grid_columnconfigure()は、親ウィジェット内の特定の行・列に対する配置挙動(重みや最小サイズなど)を設定するメソッドです。

主にweightを使って空間の分配比率を調整し、ウィンドウサイズ変更時のリサイズ挙動を制御します。

複数行・列にわたって柔軟なレイアウトを設計する際に非常に便利です。

スクロールできます
引数名説明
index対象とする行または列の番号(0から)
weight空きスペースを受け取る割合(0: 拡張しない, 1以上:拡張比率)
minsize最小サイズ(ピクセル)
pad行または列の余白(ピクセル)
uniform同じuniform名の行/列を同じサイズで均等配分
.grid_rowconfigure()/.grid_columnconfigure()の引数一覧表
import tkinter as tk

root = tk.Tk()
root.geometry("300x150")

# ウィジェット配置
tk.Label(root, text="上").grid(row=0, column=0, sticky="nsew")
tk.Label(root, text="下").grid(row=1, column=0, sticky="nsew")

# 行のサイズ調整(比率と最小サイズ)
root.grid_rowconfigure(0, weight=1, minsize=50)
root.grid_rowconfigure(1, weight=2, minsize=50)

# 列のサイズ調整(比率)
root.grid_columnconfigure(0, weight=1)

root.mainloop()
スクロールできます
使用箇所引数名説明
grid_rowconfigure(0, weight=1)weight(行0)上側の行が空間を1の比率で受け取る(下より小さくなる)
grid_rowconfigure(1, weight=2)weight(行1)下側の行が空間を2の比率で受け取る(上より大きくなる)
minsize=50minsize各行の高さの最小値を50ピクセルに固定
grid_columnconfigure(0, weight=1)weight(列)列がウィンドウサイズ変更時に幅を伸ばす

.grid_rowconfigure()/.grid_columnconfigure()を併用することで、ウィンドウサイズに応じた自動リサイズ可能なUIを構築できます。

フォームやダッシュボードなど、動的に変化するUIを作る際に不可欠です。

.place()

.place() は、ウィジェットを座標(x, y)や相対位置(relx, rely)で正確に指定して配置できる方法です。

ウィジェットの絶対的な位置とサイズを細かく制御したい場合に有効です。

ただし、動的なリサイズやレスポンシブなUIには向かず、固定サイズのUIで主に使用されます。

スクロールできます
引数名説明
x親ウィジェットの左上からの絶対x座標(ピクセル)
y親ウィジェットの左上からの絶対y座標(ピクセル)
relx親ウィジェット幅に対する相対x位置(0.0~1.0)
rely親ウィジェット高さに対する相対y位置(0.0~1.0)
widthウィジェットの固定高さ(ピクセル)
heightウィジェットの固定高さ(ピクセル)
relwidth親ウィジェット幅に対する相対幅(0.0~1.0)
relheight親ウィジェット高さに対する相対高さ(0.0~1.0)
anchor配置基準点の指定(”n”, “ne”, “center” など)
in_配置先ウィジェットの明示的な指定
.place()の主な引数一覧表
import tkinter as tk

root = tk.Tk()
root.geometry("300x200")

label = tk.Label(root, text="Hello", bg="lightgreen")
label.place(x=50, y=30, width=100, height=50, anchor="nw")

root.mainloop()
スクロールできます
使用箇所引数名説明
x=50x親ウィジェットの左上から右へ50ピクセルの位置に配置
y=30y親ウィジェットの左上から下へ30ピクセルの位置に配置
width=100widthラベルの幅を100ピクセルに指定
height=50heightラベルの高さを50ピクセルに指定
anchor=”nw”anchorウィジェットの左上(north-west)を基準点として配置

tkinterのウィジェット一覧

以下は、tkiterで利用できる各ウィジェットになります。

スクロールできます
ウィジェット名説明
Button押すことでイベントを発生させるボタン
Canvas図形描画や画像表示ができる描画領域
Checkbutton複数選択可能なチェックボックス
Entry1行のテキストを入力するフィールド
Frame複数のウィジェットをグループ化するコンテナ
Labelテキストや画像を表示するラベル
LabelFrame枠付きラベル付きのコンテナ
Listbox複数の選択肢から項目を選べるリスト
Menuメニューバーやプルダウンメニューを作成する
Menubuttonメニューを表示するためのボタン
Message自動改行付きのテキストを表示するラベル
OptionMenuドロップダウン形式の選択メニュー
PanedWindowウィンドウを分割して複数の領域を持たせるコンテナ
Radiobutton排他的な選択肢を提供するラジオボタン
Scaleスライダーで数値を選択するウィジェット
Scrollbarスクロール機能を提供するバー
Spinbox数値や項目を順送りで選択できる入力欄
Text複数行のテキストを表示・編集できるウィジェット
Toplevel独立した新しいウィンドウを作成する
PhotoImagePNGやGIFなどの画像を扱うための画像オブジェクト
tkinterウィジェット一覧

各ウィジェットに利用する引数も解説します。

また、各ウィジェットを生成するコードと引数に対する具体的な入力といった具体的な例も記載します。

Button(ボタン)

Buttonは、ユーザーがクリックできる標準的なボタンを生成します。

押下時はcommand引数で関数を指定して実行します。

テキスト、画像、色、状態などを自由にカスタマイズできます。

スクロールできます
引数名説明
textボタンに表示する文字列
commandボタンがクリックされたときに呼び出す関数
imageボタンに表示する画像(PhotoImageオブジェクト)
compoundtextとimageの配置位置(例:”top”, “left”など)
stateボタンの状態(”normal”, “disabled”, “active”)
bg/backgroundボタンの背景色
fg/foregroundボタンの文字色
fontテキストのフォント(例:(“Arial”, 12))
widthボタンの幅(文字数またはピクセル、指定方法により異なる)
heightボタンの高さ(文字数またはピクセル)
reliefボタンの縁取りスタイル(”flat”, “raised”, “sunken”など)
padx/padyボタン内側の左右/上下パディング(スペース)
anchorテキストの表示位置(例:”w”=左寄せ、”center”=中央)
cursorホバー時に表示するカーソルの形(例:”hand2″)
underline指定した文字インデックスに下線を引く
takefocusタブキーによるフォーカス移動の対象にするか(True or False)
highlightthicknessフォーカス時の枠線の太さ
Buttonの引数一覧表
import tkinter as tk

def on_click():
    print("ボタンがクリックされました!")

root = tk.Tk()
root.title("Button例")

button = tk.Button(
    root,
    text="クリックしてね",     # ← text 引数
    command=on_click,         # ← command 引数
    bg="lightblue",           # ← 背景色
    fg="darkblue",            # ← 文字色
    font=("Arial", 14),       # ← フォント
    width=20,                 # ← 幅(文字数ベース)
    height=2,                 # ← 高さ(文字数ベース)
    relief="raised",          # ← 縁取りスタイル
    cursor="hand2"            # ← ホバー時カーソル
)
button.pack(pady=20)

root.mainloop()
スクロールできます
使用箇所引数名説明
text=”クリックしてね”textボタンに表示される文字列
command=on_clickcommandクリック時に実行する関数を指定
bg=”lightblue”bg背景色を指定
fg=”darkblue”fg文字色を指定
font=(“Arial”, 14)fontテキストのフォントとサイズを指定
width=20widthボタンの幅(文字数ベース)を指定
height=2heightボタンの高さ(文字数ベース)を指定
relief=”raised”reliefボタンの立体感(縁取り)を指定
cursor=”hand2″cursorマウスオーバー時のカーソル形状を指定

Canvas(キャンバス)

Canvasは、図形の描画や画像表示、カスタムグラフィックスに使われる領域です。

矩形・線・楕円・テキスト・画像などを座標指定で自由に描画できます。

アニメーションやドラッグ操作など高度なGUI機能の実装にも利用されます。

スクロールできます
引数名説明
widthキャンバスの横幅(ピクセル単位)
heightキャンバスの縦幅(ピクセル単位)
bg/background背景色を指定
bd/borderwidth境界線の幅(デフォルトは2)
highlightthicknessフォーカス時の枠線の太さ(通常は1〜2)
relief縁取りスタイル(”flat”, “ridge”, “sunken” など)
scrollregionスクロール可能な仮想領域の範囲(例:(0, 0, 1000, 1000))
xscrollcommand横スクロールバーと連携するコマンド
yscrollcommand縦スクロールバーと連携するコマンド
cursorマウスオーバー時のカーソル形状(例:”cross”)
confine領域外の描画を制限するかどうか(True/False)
selectbackground選択範囲の背景色(アイテム選択時)
selectborderwidth選択アイテムの枠線幅
takefocusフォーカス移動の対象にするか(True/False)
nameウィジェットの名前(ID)
class_ウィジェットのクラス名(スタイル定義で使用)
Canvasの引数一覧表
import tkinter as tk

root = tk.Tk()
root.title("Canvas例")

canvas = tk.Canvas(
    root,
    width=300,             # ← width 引数:幅を300pxに設定
    height=200,            # ← height 引数:高さを200pxに設定
    bg="white",            # ← bg 引数:背景色を白に
    bd=2,                  # ← bd 引数:境界線の太さ
    relief="sunken",       # ← relief 引数:凹んだ見た目
    cursor="cross"         # ← cursor 引数:クロスカーソル
)
canvas.pack(padx=20, pady=20)

# キャンバス上に図形を描く
canvas.create_rectangle(50, 50, 150, 120, fill="skyblue")
canvas.create_text(100, 85, text="四角形", font=("Arial", 12))

root.mainloop()
スクロールできます
使用箇所引数名説明
width=300widthキャンバスの幅を300ピクセルに設定
height=200heightキャンバスの高さを200ピクセルに設定
bg=”white”bg背景色を白に設定
bd=2bdキャンバスの境界線の太さを2ピクセルに設定
relief=”sunken”relief縁取りを凹んだスタイルに設定
cursor=”cross”cursorマウスカーソルを十字型に設定

Checkbutton(チェックボタン)

Checkbuttonは、ユーザーがON/OFFの選択を行うためのボタンです。

選択状態(チェックの有無)はvariable引数でバインドされた変数に保持されます。

複数の選択肢を同時にチェック可能で、設定やオプションの選択に便利です。

スクロールできます
引数名説明
textラベルとして表示する文字列
variableチェック状態を保持する変数(IntVar, BooleanVar, など)
onvalueチェック時にvariableに格納される値(デフォルトは1)
offvalue非チェック時にvariableに格納される値(デフォルトは0)
command状態が変更されたときに呼び出す関数
stateウィジェットの状態(”normal”, “disabled”, “active”)
bg/background背景色
fg/foreground文字色
fontフォント(例:(“Arial”, 12))
anchorテキストの位置(”w”=左寄せ、”center”など)
justifyテキストの整列方法(”left”, “center”, “right”)
padx, pady内部余白(パディング)
relief縁取りのスタイル(”flat”, “raised”, “sunken”など)
indicatoronチェックボックスを表示するか(Trueで表示、Falseでボタン風)
selectcolor選択時のチェック背景色
disabledforeground無効化時の文字色
highlightthicknessフォーカス時の枠線の太さ
Checkbuttonの引数一覧表
import tkinter as tk

def check_changed():
    print("チェック状態:", check_var.get())

root = tk.Tk()
root.title("Checkbutton 例")

check_var = tk.IntVar()

check = tk.Checkbutton(
    root,
    text="同意します",           # ← text 引数:表示文字
    variable=check_var,         # ← variable 引数:状態保持
    onvalue=1,                  # ← チェックON時の値
    offvalue=0,                 # ← チェックOFF時の値
    command=check_changed,      # ← 状態変更時の関数
    font=("Arial", 12),         # ← フォント設定
    selectcolor="lightgreen",   # ← 選択時のチェック背景色
    relief="groove"             # ← 縁取りスタイル
)
check.pack(pady=20)

root.mainloop()
スクロールできます
使用箇所引数名説明
text=”同意します”text表示するラベル文字列
variable=check_varvariable状態を保持する変数(IntVar)
onvalue=1onvalueチェック時に格納される値
offvalue=0offvalue非チェック時に格納される値
command=check_changedcommand状態変更時に呼び出される関数
font=(“Arial”, 12)fontテキストのフォントを指定
selectcolor=”lightgreen”selectcolorチェックされたときの背景色
relief=”groove”reliefウィジェットの立体的な縁取りスタイルを指定

Entry(エントリー)

Entryは、1行のテキスト入力欄を生成します。

ユーザーからの文字入力を受け取り、StringVarなどの変数と連携して値を管理できます。

ログインフォームや検索バーなど、単一行の入力フィールドに適します。

スクロールできます
引数名説明
textvariable入力値をバインドする変数(例:StringVar())
show入力内容をマスクする文字(例:’*’ でパスワード風表示)
width表示幅(文字数単位)
state状態(”normal”、”disabled”、”readonly”)
bg/background背景色
fg/foreground文字色
bd/borderwidth枠線の太さ
fontフォント(例:(“Arial”, 12))
justify文字の配置(”left”、”center”、”right”)
relief縁取りスタイル(”flat”, “sunken”, “groove” など)
highlightthicknessフォーカス枠の太さ
insertbackgroundカーソル色
insertwidthカーソル幅
disabledforeground無効状態の文字色
exportselection選択内容のクリップボード共有の有無(True/False)
takefocusフォーカス移動の対象にするかどうか
xscrollcommandスクロールバーと連携するコマンド
nameウィジェット名(ID)
Entryの引数一覧表
import tkinter as tk

def show_entry():
    print("入力内容:", entry_var.get())

root = tk.Tk()
root.title("Entry 例")

entry_var = tk.StringVar()

entry = tk.Entry(
    root,
    textvariable=entry_var,     # ← 入力値を entry_var にバインド
    width=30,                   # ← 表示幅:30文字分
    font=("Arial", 12),         # ← フォント指定
    bg="white",                 # ← 背景色
    fg="black",                 # ← 文字色
    relief="sunken",            # ← 縁取りスタイル
    justify="left",             # ← 左寄せで入力
    show="*"                    # ← 入力をマスク(パスワード表示)
)
entry.pack(pady=10)

btn = tk.Button(root, text="表示", command=show_entry)
btn.pack()

root.mainloop()
スクロールできます
使用箇所引数名説明
textvariable=entry_vartextvariable入力内容を entry_var に連動させる
width=30width表示フィールドの幅を30文字分に設定
font=(“Arial”, 12)font文字のフォントをArial/12ptに設定
bg=”white”bg背景色を白に指定
fg=”black”fgテキストの色を黒に指定
relief=”sunken”relief立体的に凹んだ境界線で装飾
justify=”left”justify入力文字を左寄せに設定
show=”*”show入力文字を * でマスク(パスワード用)

Frame(フレーム)

Frameは、複数のウィジェットをグループ化・整理するためのコンテナです。

ウィジェットをまとめてレイアウトしたり、テーマやスタイルを分けるのに便利です。

親ウィジェットとしてレイアウト制御に使われ、複雑なGUI構造の基盤になります。

スクロールできます
引数名説明
bg/background背景色
bd/borderwidth枠線の太さ(デフォルトは0)
relief枠線のスタイル(”flat”, “sunken”, “raised”, “groove”など)
widthフレームの幅(px単位)
heightフレームの高さ(px単位)
highlightbackgroundフォーカスしていないときの枠線色
highlightcolorフォーカス時の枠線色
highlightthicknessフォーカス枠の太さ
padx, pady内部余白(左右・上下)
cursorマウスオーバー時のカーソル形状(例:”cross”)
class_ウィジェットクラス名(スタイリングに使われる)
takefocusフォーカス移動の対象にするかどうか
nameウィジェット名(ID)
visual視覚属性(通常使用しない)
colormapカラーマップの識別(特殊用途)
Frameの引数一覧表
import tkinter as tk

root = tk.Tk()
root.title("Frame 例")

# フレーム作成
frame = tk.Frame(
    root,
    bg="lightgray",        # ← 背景色
    width=300,             # ← 幅(ピクセル)
    height=150,            # ← 高さ(ピクセル)
    relief="groove",       # ← 縁取りスタイル
    bd=2                   # ← 枠線の太さ
)
frame.pack(padx=10, pady=10)

# フレーム内にボタンを配置
btn = tk.Button(frame, text="フレーム内のボタン")
btn.pack(pady=20)

root.mainloop()
スクロールできます
使用箇所引数名説明
bg=”lightgray”bgフレームの背景色を指定
width=300widthフレームの横幅を300ピクセルに設定
height=150heightフレームの高さを150ピクセルに設定
relief=”groove”reliefフレームの縁取りスタイルを「溝型」に指定
bd=2borderwidth縁取りの線の太さを2ピクセルに設定
pack(padx=10, pady=10)padx, pady外側の余白(周囲とのスペース)を10ピクセルずつ追加

Label(ラベル)

Labelは、テキストや画像を表示するための基本ウィジェットです。

見出し/説明文/状態表示などユーザー入力を必要としない静的な情報表示に使われます。

文字色・背景色・フォント・画像の表示など、柔軟なカスタマイズが可能です。

スクロールできます
引数名説明
text表示する文字列
textvariableバインドする変数(例:StringVar())
image表示する画像(例:PhotoImage インスタンス)
compound画像とテキストの表示位置(top, bottom, left, right, center)
fontフォント(例:(“Arial”, 12))
fg/foreground文字色
bg/background背景色
bd/borderwidth枠線の太さ
relief枠線のスタイル(flat, groove, raised, sunken など)
anchorテキストの配置位置(n, ne, e, se, s, sw, w, nw, center)
justifyテキストの整列方法(left, center, right)
padx, padyテキストとラベル枠の間の余白
width, heightラベルの幅・高さ(文字数単位、または画像用にpx単位としても扱われる)
cursorマウスポインタの形
state状態(通常は “normal” または “disabled”)
wraplength自動折り返しする最大幅(px)
takefocusフォーカス移動の対象にするかどうか
Labelの引数一覧表
import tkinter as tk

root = tk.Tk()
root.title("Label 例")

label = tk.Label(
    root,
    text="ようこそ Tkinter ラベルへ!",  # ← text 引数で表示内容
    font=("Arial", 14),                # ← フォント設定
    bg="lightblue",                    # ← 背景色
    fg="black",                        # ← 文字色
    width=30,                          # ← 幅(文字単位)
    height=2,                          # ← 高さ(文字単位)
    relief="groove",                   # ← 枠線のスタイル
    bd=2,                              # ← 枠線の太さ
    anchor="center"                    # ← テキスト配置(中央寄せ)
)
label.pack(padx=10, pady=10)

root.mainloop()
スクロールできます
使用箇所引数名説明
text=”ようこそ…”text表示する文字列を指定
font=(“Arial”, 14)font表示するテキストのフォントとサイズを指定
bg=”lightblue”bg背景色を水色に設定
fg=”black”fgテキストの文字色を黒に設定
width=30, height=2width, heightラベルのサイズ(文字数単位)を指定
relief=”groove”reliefラベルの縁取りスタイルを「溝型」に設定
bd=2borderwidth枠線の太さを2pxに設定
anchor=”center”anchorテキストを中央に配置
pack(padx=10, pady=10)padx, padyラベルの周囲に外部余白を追加(10px)

LabelFrame(ラベルフレーム)

LabelFrameは、タイトル付きの囲い枠を提供するウィジェットで複数ウィジェットのグループ化に使われます。

セクション分けや設定項目の分類表示などに使われUIを整理するのに便利です。

Frameと同様の引数に加えて、textやlabelanchorなどラベル表示に関する引数があります。

スクロールできます
引数名説明
text枠のタイトルとして表示するテキスト
labelanchorタイトルの表示位置(例: “n”, “ne”, “nw”, “e” など)
labelwidgettextの代わりに使うカスタムウィジェット
bg/background背景色
fg/foregroundタイトル文字の色
fontタイトルのフォント
bd/borderwidth枠線の太さ
relief枠線のスタイル(flat, groove, ridge, sunken, raisedなど)
padx, pady内部余白(左右・上下)
width, heightフレームのサイズ(px単位)
highlightthicknessフォーカス枠の太さ
highlightbackgroundフォーカス外の枠色
LabelFrameの引数一覧表
import tkinter as tk

root = tk.Tk()
root.title("LabelFrame 例")

labelframe = tk.LabelFrame(
    root,
    text="設定項目",            # ← タイトル表示
    labelanchor="n",           # ← タイトルの位置(上中央)
    bg="white",                # ← 背景色
    font=("Arial", 12, "bold"),# ← タイトルのフォント
    fg="blue",                 # ← タイトルの文字色
    bd=2,                      # ← 枠線の太さ
    relief="groove",           # ← 枠線スタイル
    padx=10, pady=10           # ← 内部余白
)
labelframe.pack(padx=20, pady=20)

tk.Label(labelframe, text="名前:").grid(row=0, column=0)
tk.Entry(labelframe).grid(row=0, column=1)

root.mainloop()
スクロールできます
使用箇所引数名説明
text=”設定項目”textラベルフレーム上部に表示されるタイトル文字
labelanchor=”n”labelanchorタイトルの表示位置(ここでは「上中央」)
bg=”white”bgフレームの背景色を白に設定
font=(“Arial”, 12, “bold”)fontタイトルテキストのフォント・サイズ・太字指定
fg=”blue”fgタイトル文字の色を青に設定
bd=2borderwidthフレーム枠線の太さを2pxに設定
relief=”groove”reliefフレームの縁取りスタイルを「groove(溝型)」に設定
padx=10, pady=10padx, pady内部の余白(ウィジェットと枠の間)を10pxずつ設定
pack(padx=20, pady=20)外部余白(補足)ラベルフレーム自体の周囲に余白を設定(親ウィンドウとの間隔)

ListBox(リストボックス)

Listboxは複数の項目を一覧表示し、ユーザーが1つまたは複数選択できるウィジェットです。

フォームの選択肢やファイル一覧などに利用され、スクロールバーと組み合わせて使うことも一般的です。

選択モードや表示数/背景色など、見た目や挙動を柔軟にカスタマイズ可能です。

スクロールできます
引数名説明
bg/background背景色
fg/foreground文字色
fontフォント
height表示する行数
width表示する文字数(1行あたりの文字幅)
selectmode選択モード(”single”, “browse”, “multiple”, “extended”)
activestyleアクティブ項目の見た目(”dotbox”, “none”, “underline”など)
exportselection他のウィジェットと選択共有するか(通常はTrue)
justifyテキストの配置(left, center, right)
relief枠線スタイル
bd/borderwidth枠線の太さ
selectbackground選択時の背景色
selectforeground選択時の文字色
highlightthicknessフォーカス枠の太さ
Listboxの引数一覧表
import tkinter as tk

root = tk.Tk()
root.title("Listbox 例")

listbox = tk.Listbox(
    root,
    height=5,                    # ← 表示行数
    width=30,                    # ← 1行あたりの文字数
    selectmode="multiple",       # ← 複数選択可能
    bg="white",                  # ← 背景色
    fg="black",                  # ← 文字色
    font=("Arial", 12),          # ← フォント
    selectbackground="lightblue",# ← 選択時の背景色
    selectforeground="red",      # ← 選択時の文字色
    relief="groove",             # ← 枠線スタイル
    borderwidth=2                # ← 枠線の太さ
)
listbox.pack(padx=10, pady=10)

# サンプル項目を追加
for item in ["Python", "Java", "C++", "JavaScript", "Go"]:
    listbox.insert(tk.END, item)

root.mainloop()
スクロールできます
使用箇所引数名説明
height=5height表示する行数を5に設定
width=30width各行の表示幅を30文字に設定
selectmode=”multiple”selectmode複数項目の選択を可能に設定
bg=”white”bg背景色を白に設定
fg=”black”fg文字色を黒に設定
font=(“Arial”, 12)fontフォントサイズを12に設定
selectbackground=”lightblue”selectbackground選択された項目の背景色を水色に設定
selectforeground=”red”selectforeground選択された項目の文字色を赤に設定
relief=”groove”relief枠線を溝状に設定
borderwidth=2bd/borderwidth枠線の太さを2pxに設定

Menu(メニュー)

Menuは、ウィンドウの上部に表示されるメニューバーやプルダウンメニューを作成するウィジェットです。

階層構造(サブメニュー)やチェック付きメニュー/ラジオメニューなど、柔軟にカスタマイズできます。

add_command()やadd_cascade()などメソッドを使って動的にメニュー項目を追加できます。

スクロールできます
引数名説明
bg/background背景色
bd/borderwidth枠線の太さ(デフォルトは0)
activebackground選択時またはカーソルが当たったときの背景色
activeforeground選択時またはカーソルが当たったときの文字色
tearoffサブメニューを独立して切り離せるか(0:無効, 1:有効)
fontフォントの指定
disabledforeground無効化された項目の文字色
reliefメニュー境界線のスタイル
bd/borderwidthメニューの枠線の太さ
cursorマウスオーバー時のカーソル形状(例:”cross”)
titleウィンドウのタイトル
Menuの引数一覧表
import tkinter as tk

def say_hello():
    print("Hello!")

root = tk.Tk()
root.title("Menu 例")

# メニューバー作成
menubar = tk.Menu(root, bg="white", fg="black", font=("Arial", 10))  # ← 背景色・文字色・フォント

# ファイルメニュー作成
file_menu = tk.Menu(menubar, tearoff=0)  # ← サブメニューの切り離しを無効化
file_menu.add_command(label="New", command=say_hello)
file_menu.add_command(label="Exit", command=root.quit)

# メニューバーにファイルメニューを追加
menubar.add_cascade(label="File", menu=file_menu)

# メニューバーをウィンドウに設定
root.config(menu=menubar)

root.mainloop()
スクロールできます
使用箇所引数名説明
tk.Menu(root, bg=”white”, fg=”black”, font=…)bg, fg, fontメニューバーの背景色、文字色、フォントを設定
tk.Menu(menubar, tearoff=0)tearoff「ファイル」メニューを独立して切り離せないように設定
add_command(…)メニュー項目の追加(これは引数ではなくメソッド)
add_cascade(label=”File”, menu=file_menu)サブメニューを「File」として追加(menu=で関連づけ)
root.config(menu=menubar)作成したメニューバーをウィンドウに設定

MenuButton(メニューボタン)

Menubuttonは、クリックするとドロップダウンメニューを表示するボタン型ウィジェットです。

通常のボタンのように表示されますが、関連付けたMenuウィジェットを表示するトリガーになります。

フォームやツールバーにドロップダウン選択肢を組み込みたいときに使われます。

スクロールできます
引数名説明
textボタンに表示するテキスト
image表示する画像(PhotoImageオブジェクトなど)
compoundテキストと画像の表示位置(top, bottom, left, right, center)
menu関連付けるMenuウィジェット(後からconfig()で設定することが多い)
bg/background背景色
fg/foreground前景色(文字色)
activebackground押下時の背景色
activeforeground押下時の文字色
fontフォント
reliefボタンの立体感(flat, raised, sunken, ridge, groove)
width/heightボタンの幅/高さ(文字単位)
anchorテキストの配置(n, ne, e, se, s, sw, w, nw, center)
directionドロップダウンメニューの展開方向(”above”, “below”, “left”, “right”)
Menubuttonの引数一覧表
import tkinter as tk

def select_option(option):
    print(f"選択された項目: {option}")

root = tk.Tk()
root.title("Menubutton 例")

# Menubutton 作成
mb = tk.Menubutton(root, text="選択してください", bg="lightblue", relief="raised", font=("Arial", 12))  # ← text, bg, relief, font を指定
mb.grid(row=0, column=0, padx=10, pady=10)

# 関連付ける Menu を作成
menu = tk.Menu(mb, tearoff=0)
menu.add_command(label="オプション 1", command=lambda: select_option("オプション 1"))
menu.add_command(label="オプション 2", command=lambda: select_option("オプション 2"))

# Menubutton に Menu を関連付け
mb["menu"] = menu  # ← menu 引数に相当(configでも可)

root.mainloop()
スクロールできます
使用箇所引数名説明
tk.Menubutton(…, text=”選択してください”, …)textボタンに表示されるラベルテキスト
tk.Menubutton(…, bg=”lightblue”, relief=”raised”, …)bg, relief背景色、立体感の種類
tk.Menubutton(…, font=(“Arial”, 12))fontテキストのフォントスタイル
mb[“menu”] = menumenuドロップダウンとして表示されるMenuを指定
menu = tk.Menu(mb, tearoff=0)tearoff(Menu側)ドロップメニューを切り離せないように設定(Menubuttonではない)

Message(メッセージ)

Messageは、複数行のテキストを自動折り返しで表示するラベルに似たウィジェットです。

Labelでは長いテキストが折り返されないため、可読性の高い表示を行いたい場合に便利です。

読み物形式の説明文や注意書きなどに適しています。

スクロールできます
引数名説明
text表示するテキスト
textvariable変数(StringVarなど)でテキストをバインド
anchorテキストの配置位置(n, ne, e, se, s, sw, w, nw, center)
aspectテキストの縦横比(整数)
bg/background背景色
fg/foreground前景色(文字色)
fontテキストのフォントスタイル
justifyテキストの整列方法(left, center, right)
padx/padyテキストとウィジェット境界の余白
reliefウィジェットの立体感(flat, raised, sunken, ridge, groove)
widthウィジェットの幅(ピクセル単位)
cursorマウスカーソルの形状
Messageの引数一覧表
import tkinter as tk

root = tk.Tk()
root.title("Message ウィジェットの例")

message_text = (
    "このウィジェットは、複数行のテキストを自動で折り返して表示できます。\n"
    "説明文や注意書きなどに便利です。"
)

msg = tk.Message(
    root,
    text=message_text,         # ← text 引数
    width=300,                 # ← width:折り返しの幅
    font=("Helvetica", 12),   # ← font:フォント
    bg="lightyellow",         # ← bg:背景色
    fg="black",               # ← fg:文字色
    justify="left",           # ← justify:左揃え
    relief="groove",          # ← relief:枠線
    padx=10, pady=10          # ← padx, pady:余白
)
msg.pack(padx=20, pady=20)

root.mainloop()
スクロールできます
使用箇所引数名説明
text=message_texttext表示する長文テキスト
width=300width自動折り返しする最大幅(ピクセル単位)
font=(“Helvetica”, 12)font表示フォント
bg=”lightyellow”bg背景色
fg=”black”fgテキストの色
justify=”left”justifyテキストの整列(左揃え)
relief=”groove”reliefメッセージ枠のデザイン
padx=10, pady=10padx/padyウィジェット内側の余白
pack(padx=20, pady=20)padx/padyウィジェット外側の余白(レイアウト時の引数)

OptionMenu(オプションメニュー)

OptionMenuは、ユーザーが定義した選択肢の中から1つを選ぶドロップダウンメニューです。

選択された値はStringVarなどの変数に自動的に格納され、他のウィジェットと連携できます。

フォームや設定画面などで限定的な選択肢を提供したい場合に便利です。

OptionMenuは他のウィジェットと異なり、通常のキーワード引数ではなくコンストラクタで引数を渡す形式です。

スクロールできます
引数名説明
master親ウィジェット
variableStringVarオブジェクト/選択された値が格納される
value1〜valueN選択肢として表示する文字列リスト
bg背景色
fg文字色
fontフォントスタイル
widthボタンの幅(文字数単位)
highlightthicknessフォーカス枠の太さ
anchorテキストの位置(w, center など)
directionメニューの表示方向(tk.RIGHT, tk.LEFTなど)
OptionMenuの引数一覧表
import tkinter as tk

root = tk.Tk()
root.title("OptionMenu の例")

# 変数の定義
selected_color = tk.StringVar(value="赤")  # ← variable

# OptionMenu ウィジェットの生成
color_menu = tk.OptionMenu(
    root,
    selected_color,     # ← variable
    "赤", "青", "緑", "黄", "黒"  # ← 選択肢 value1〜valueN
)

# 外観の調整
color_menu.config(
    width=10,           # ← width
    font=("Arial", 12), # ← font
    bg="white"          # ← bg
)

color_menu.pack(pady=20)

root.mainloop()
スクロールできます
使用箇所引数名説明
selected_color = tk.StringVar(…)variable選択された値を保持する変数
“赤”, “青”, …value1〜Nドロップダウンで選べる各選択肢
width=10widthメニューの横幅(10文字分)
font=(“Arial”, 12)font表示フォント
bg=”white”bg背景色(白)
pack(pady=20)ウィジェットの外側余白(レイアウト)

PanedWindow(パネルウィンドウ)

PanedWindowは、複数ウィジェットを水平または垂直に並べて可動式区切りバーで分割できるコンテナウィジェットです。

区切りバー(スプリッター)をドラッグすることで、ユーザーが表示領域を調整できます。

ファイルマネージャーや設定画面などで、柔軟なレイアウト構成を実現できます。

スクロールできます
引数名説明
master親ウィジェット
orientパネルの配置方向
bg背景色
bd枠線の太さ(border width)
widthウィジェットの幅
heightウィジェットの高さ
sashpadパネル間のスペース(パディング)
sashrelief境界バーのreliefスタイル
sashwidth区切りバー(sash)の幅
handlepadドラッグ用ハンドルのパディング
handlesizeドラッグ用ハンドルのサイズ
showhandleハンドルを表示するか(True/False)
PanedWindowの引数一覧表

add(widget)メソッドでパネルにウィジェットを追加できます。

import tkinter as tk

root = tk.Tk()
root.title("PanedWindow の例")

# PanedWindow の作成
pw = tk.PanedWindow(
    root,
    orient=tk.HORIZONTAL,  # ← orient
    bg="lightgray",        # ← bg
    sashrelief=tk.RAISED,  # ← sashrelief
    sashwidth=10,          # ← sashwidth
    showhandle=True        # ← showhandle
)
pw.pack(fill=tk.BOTH, expand=True)

# 左側パネル
left = tk.Label(pw, text="左パネル", bg="lightblue", width=20, height=10)
pw.add(left)  # ← add() でウィジェットを追加

# 右側パネル
right = tk.Label(pw, text="右パネル", bg="lightgreen", width=20, height=10)
pw.add(right)

root.mainloop()
スクロールできます
使用箇所引数名説明
orient=tk.HORIZONTALorientパネルを横方向に配置
bg=”lightgray”bg背景色
sashrelief=tk.RAISEDsashreliefスプリッターの見た目
sashwidth=10sashwidth区切りバーの幅
showhandle=Trueshowhandleドラッグ用ハンドルを表示
pw.add(left)/pw.add(right)add()各パネルにウィジェットを追加
left = tk.Label(…), right = tk.Label(…)パネルとして使用されるラベル
pack(fill=tk.BOTH, expand=True)ウィンドウ全体に表示

RadioButton(ラジオボタン)

Radiobuttonは、複数選択肢の中から1つを選ぶウィジェットです。

複数のRadiobuttonが同じvariableを共有することで、相互に排他的な選択が可能です。

フォームや設定画面での選択肢に便利なウィジェットです。

スクロールできます
引数名説明
master親ウィジェット
textボタンに表示する文字列
variable選択状態を保持する変数(tk.StringVarなど)
value選択時にvariableにセットされる値
commandボタンが選択されたときに呼ばれる関数
state状態(NORMAL, DISABLEDなど)
bg背景色
fg文字色
fontフォント
anchorテキストの位置(w, e, center など)
justifyテキストの整列(LEFT, CENTER, RIGHT)
width
height高さ
padx/padyパディング(内側余白)
indicatoronインジケーターを表示するか
selectcolor選択時の背景色
relief枠線のスタイル
image画像を表示
compoundテキストと画像の表示位置の関係(left, right, top, bottom)
Radiobuttonの引数一覧表
import tkinter as tk

def show_choice():
    print("選択された値:", selected.get())

root = tk.Tk()
root.title("Radiobutton の例")

selected = tk.StringVar()
selected.set("B")

rb1 = tk.Radiobutton(
    root,
    text="選択肢 A",      # ← text
    variable=selected,   # ← variable
    value="A",           # ← value
    command=show_choice, # ← command
    bg="lightyellow",    # ← bg
    selectcolor="orange" # ← selectcolor
)
rb1.pack(anchor="w")

rb2 = tk.Radiobutton(
    root,
    text="選択肢 B",
    variable=selected,
    value="B",
    command=show_choice,
    bg="lightyellow",
    selectcolor="orange"
)
rb2.pack(anchor="w")

root.mainloop()
スクロールできます
使用箇所引数名説明
text=”選択肢 A”textボタンに表示される文字列
variable=selectedvariableラジオボタン群で共有する変数
value=”A”/value=”B”value選択時にvariableに入る値
command=show_choicecommand選択時に呼び出される関数
bg=”lightyellow”bg背景色
selectcolor=”orange”selectcolor選択時の○部分の色
pack(anchor=”w”)左寄せで表示

Scale(スケール)

Scaleは、ユーザーが数値をスライダーで調整できるGUI要素です。

水平方向や垂直方向にスライドさせて範囲内の値を選択できます。

from_~toで範囲を指定し、commandで値変更時の処理も設定可能です。

スクロールできます
引数名説明
master親ウィジェット
from_スケールの最小値(fromはキーワードとして予約されているためfrom_)
toスケールの最大値
orient向き(tk.HORIZONTAL または tk.VERTICAL)
lengthスケール全体の長さ(ピクセル)
resolution変化する刻み値(小数にも対応)
tickintervalメモリ間隔(数値ラベルの間隔)
command値が変更されたときに呼ばれる関数
variableスケールの値を保持する
labelスケールの上部または横に表示されるラベル
sliderlengthスライダー(摘み)の長さ
sliderreliefスライダーの枠スタイル
showvalue現在値を表示するか(True/False)
bg/fg背景色/文字色
fontラベルや値のフォント
state状態(NORMAL, DISABLEDなど)
Scaleの引数一覧表
import tkinter as tk

def on_scale(val):
    print("選択された値:", val)

root = tk.Tk()
root.title("Scale の例")

scale = tk.Scale(
    root,
    from_=0,             # ← from_
    to=100,              # ← to
    orient=tk.HORIZONTAL,# ← orient
    length=300,          # ← length
    tickinterval=20,     # ← tickinterval
    resolution=5,        # ← resolution
    label="ボリューム",   # ← label
    command=on_scale     # ← command
)
scale.pack(pady=10)

root.mainloop()
スクロールできます
使用箇所引数名説明
from_=0from_スケールの最小値
to=100toスケールの最大値
orient=tk.HORIZONTALorientスライダーの方向(水平方向)
length=300lengthスケールの全長
tickinterval=20tickinterval20ごとに目盛りラベルを表示
resolution=5resolution5刻みでスライドできるように設定
label=”ボリューム”labelスケールに表示されるタイトルラベル
command=on_scalecommand値変更時に呼ばれる関数
pack(pady=10)上下の余白を設定

Scrollbar(スクロールバー)

Scrollbarは、他ウィジェットの表示領域を超えた部分をスクロール可能にするウィジェットです。

縦方向または横方向に配置し、連動するウィジェットのスクロール操作をサポートします。

command引数でスクロール対象のウィジェット操作関数を指定し、setメソッドで位置調整します。

スクロールできます
引数名説明
master親ウィジェット
orientスクロールバーの方向(tk.VERTICALまたはtk.HORIZONTAL)
commandスクロール対象のウィジェットに連動するスクロール操作関数
activebackgroundマウスが乗ったときの背景色
bg/background背景色
troughcolorスクロールバーの溝の色
widthスクロールバーの幅(ピクセル)
elementborderwidthスクロールバーの境界幅
relief枠のスタイル(FLAT, RAISED, SUNKENなど)
takefocusフォーカスの受け取り(0か1)
jumpスクロールの動作をページ単位にするかどうか(True/False)
Scrollbarの引数一覧表
import tkinter as tk

root = tk.Tk()
root.title("Scrollbar の例")

# テキストウィジェット(スクロール対象)
text = tk.Text(root, width=40, height=10)
text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

# スクロールバーの作成
scrollbar = tk.Scrollbar(
    root,
    orient=tk.VERTICAL,        # ← orient
    command=text.yview         # ← command
)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

# スクロールバーとテキストウィジェットを連動させる
text.config(yscrollcommand=scrollbar.set)

root.mainloop()
スクロールできます
使用箇所引数名説明
orient=tk.VERTICALorient縦方向のスクロールバーとして配置
command=text.yviewcommandスクロール操作時にテキストウィジェットの表示を更新
text.config(yscrollcommand=scrollbar.set)テキストウィジェットのスクロール時にスクロールバーを動かす

Spinbox(スピンボックス)

Spinboxは、ユーザーが上下の矢印ボタンで値を増減できる入力欄です。

数値や文字列の範囲を指定し、簡単に選択・入力が可能です。

from_とtoで範囲設定、commandで値変更時の処理を指定できます。

スクロールできます
引数名説明
master親ウィジェット
from_開始値(数値範囲の最小値)
to終了値(数値範囲の最大値)
increment値の増減幅(デフォルトは1)
values指定値のリストやタプル(これを指定するとfrom_/toは無効)
textvariable値を保持する変数
command値が変更されたときに呼ばれる関数
state状態(NORMAL/DISABLEDなど)
wrap範囲の端から端への循環(True/False)
width
justify文字の配置(LEFT, CENTER, RIGHT)
fontフォント
bg/fg背景色/文字色
Spinboxの引数一覧表
import tkinter as tk

def on_spinbox_change():
    print("現在の値:", spinbox.get())

root = tk.Tk()
root.title("Spinbox の例")

spinbox = tk.Spinbox(
    root,
    from_=0,                # ← from_
    to=10,                  # ← to
    increment=2,            # ← increment
    width=5,                # ← width
    command=on_spinbox_change,  # ← command
    justify='center'        # ← justify
)
spinbox.pack(pady=10)

root.mainloop()
スクロールできます
使用箇所引数名説明
from_=0from_スピンボックスの最小値
to=10toスピンボックスの最大値
increment=2increment値の増減幅(2ずつ変わる)
width=5width幅を5文字分に設定
command=on_spinbox_changecommand値変更時に関数を呼び出す
justify=’center’justify入力テキストを中央寄せ

Text(テキスト)

Textは、複数行のテキスト入力や表示を行うウィジェットです。

改行や装飾(タグ)も可能で、ログ表示やメモ帳のようなアプリに適しています。

スクロールバーと組み合わせて使うことが多く、テキスト操作メソッドも豊富です。

スクロールできます
引数名説明
master親ウィジェット
width
height高さ
bg/background背景色
fg/foreground文字色
padx/pady内側の余白(ピクセル単位)
bd/borderwidth枠線の幅
relief枠のスタイル(FLAT, RAISED, SUNKENなど)
wrap折り返し方法(NONE, CHAR, WORD)
state状態(NORMAL/DISABLEDなど)
exportselectionクリップボードとの選択連動(True/False)
undoUndo機能を有効にする(True/False)
autoseparatorsUndo時のセパレーターを自動挿入(True/False)
maxundoUndo履歴の最大数
xscrollcommand水平スクロール時のコールバック関数
yscrollcommand垂直スクロール時のコールバック関数
Textの引数一覧表
import tkinter as tk

root = tk.Tk()
root.title("Text ウィジェットの例")

text = tk.Text(
    root,
    width=40,              # ← width
    height=10,             # ← height
    bg="lightyellow",      # ← bg
    fg="blue",             # ← fg
    font=("Arial", 12),    # ← font
    wrap="word",           # ← wrap
    undo=True              # ← undo
)
text.pack(padx=10, pady=10)

text.insert(tk.END, "ここに複数行のテキストを入力・表示できます。\n改行も可能です。")

root.mainloop()
スクロールできます
使用箇所引数名説明
width=40width横幅を40文字分に設定
height=10height縦方向の行数を10行に設定
bg=”lightyellow”bg背景色を薄い黄色に設定
fg=”blue”fg文字色を青に設定
font=(“Arial”, 12)fontフォントをArial/サイズ12に設定
wrap=”word”wrap単語単位で折り返す設定
undo=TrueundoUndo機能を有効化

Toplevel(トップレベル)

Toplevelは、新しい独立したウィンドウを生成するウィジェットです。

メインウィンドウ(Tk)とは別にサブウィンドウを作成し、ダイアログや設定画面などに使います。

親ウィンドウの管理下で独自のタイトルバーやサイズ変更が可能です。

スクロールできます
引数名説明
master親ウィジェット(通常はメインウィンドウ)
class_ウィンドウのクラス名
useX11用のXリソースデータベースの識別子
screen表示するスクリーン番号(マルチディスプレイ環境で使用)
baseNameX11用のベース名(デフォルトはclass_と同じ)
Toplevelの引数一覧表
import tkinter as tk

root = tk.Tk()
root.title("メインウィンドウ")

def open_subwindow():
    sub = tk.Toplevel(master=root)       # ← master引数(親ウィンドウ指定)
    sub.title("サブウィンドウ")
    sub.geometry("300x200")              # ウィンドウサイズ指定
    label = tk.Label(sub, text="これはサブウィンドウです")
    label.pack(padx=20, pady=20)

button = tk.Button(root, text="サブウィンドウを開く", command=open_subwindow)
button.pack(padx=50, pady=50)

root.mainloop()
スクロールできます
使用箇所引数名説明
tk.Toplevel(master=root)master親ウィンドウ(root)を指定し、サブウィンドウを作成

PhotoImage(フォトイメージ)

PhotoImageは画像ファイルを読み込んで表示するウィジェットです。

対応形式は主にGIFやPNGでラベルやボタンの画像表示に使われます。

画像はメモリ上に保持されウィジェットにセットして表示します。

スクロールできます
引数名説明
file読み込む画像ファイルのパス(GIF、PNGなど)
data画像データを直接base64エンコード文字列で指定する場合に使用
format画像フォーマット指定(通常は省略、gifや’pngなどを明示的に指定可能)
width画像の幅(ピクセル単位、ファイル未指定時に有効)
height画像の高さ(ピクセル単位、ファイル未指定時に有効)
paletteカラー画像のパレット指定(通常は使われません)
PhotoImageの引数一覧表
import tkinter as tk

root = tk.Tk()
root.title("PhotoImageの例")

# 画像ファイルを読み込み(file引数)
img = tk.PhotoImage(file="example.png")

label = tk.Label(root, image=img)  # image引数にPhotoImageオブジェクトをセット
label.pack(padx=20, pady=20)

root.mainloop()
スクロールできます
使用箇所引数名説明
tk.PhotoImage(file=”example.png”)file画像ファイルパスを指定し画像を読み込む
tk.Label(root, image=img)imageラベルに画像としてPhotoImageオブジェクトをセット

PhotoImageは画像ファイルの読み込みにfileを使い、imageオプションに渡して表示します。

data引数でbase64文字列を直接指定する使い方もありますが、基本はファイル指定が一般的です。

この記事を書いた人

sugiのアバター sugi SUGI

【経歴】玉川大学工学部卒業→新卒SIer企業入社→2年半後に独立→プログラミングスクール運営/受託案件→フリーランスエンジニア&SEOコンサル→Python特化のコンテンツサイトJob Code運営中

コメント

コメントする

目次