こんにちは!ゆーや(@yuyamanm118712)です。
こちらのページでは完全独学でWebプログラマとなった私が
デスクトップアプリには欠かせない「ttkの操作」に関して必要な情報をまとめています。
最後までじっくりと読んで、一緒に学習にしていきましょう。
なお、ご指摘・ご質問はTwitter(@yuyamanm118712)のDMまでよろしくお願いします。
この記事を読むと
- ttkの基本操作が分かる!
- ウィジェットの種類が分かる!
- ttkとtkinterの違いがわかる!
ttkとは
ttkは、Tkinterに含まれる拡張モジュールで、“themed tkinter”の略です!
ttkを使うと、標準のtkウィジェットよりも見た目が良く、クロスプラットフォームで一貫したスタイルを持つウィジェットを作成できます!
ttkの基本操作
ttkのインポートとサンプルコード
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("ttk Themed Widgets")
root.geometry("300x200")
label = ttk.Label(root, text="Hello, ttk!")
label.pack(pady=10)
button = ttk.Button(root, text="Click Me")
button.pack(pady=10)
entry = ttk.Entry(root)
entry.pack(pady=10)
root.mainloop()
基本的にはtkinterと同様に使えるよ!
tkinterの使い方は以下の記事を読んでみてね!
tkkのウィジェット(部品)
ウィジェットの一覧
ttkウィジェット | 概要 | tkinterで使用可能か |
ttk.Button | ボタンウィジェット。 | ○ |
ttk.Checkbutton | チェックボタンウィジェット。 | ○ |
ttk.Combobox | ドロップダウンリストを提供。 | × |
ttk.Entry | テキスト入力フィールド。 | ○ |
ttk.Frame | コンテナフレーム。 | ○ |
ttk.Label | テキストや画像表示用ラベル。 | ○ |
ttk.Labelframe | ラベル付きフレーム。 | × |
ttk.Menubutton | メニューボタン。 | ○ |
ttk.Panedwindow | スプリットウィンドウ。 | × |
ttk.Progressbar | 進捗バー。 | × |
ttk.Radiobutton | ラジオボタン。 | ○ |
ttk.Scale | スライダー。 | ○ |
ttk.Scrollbar | スクロールバー。 | ○ |
ttk.Separator | 区切り線。 | × |
ttk.Sizegrip | ウィンドウサイズ変更グリップ。 | × |
ttk.Spinbox | スピンボックス。 | ○ |
ttk.Treeview | 階層データ表示用ツリービュー。 | × |
ttk.Notebook | タブ付きウィジェット。 | × |
ttk.Button
tkinterと使い方は同じ!
以下の記事を参考にしてね!
ttk.Checkbutton
tkinterと使い方は同じ!
以下の記事を参考にしてね!
ttk.Combobox
import tkinter as tk
from tkinter import ttk
def on_combobox_select(event):
label.config(text=f"Selected: {combo.get()}")
root = tk.Tk()
root.title("ttk.Combobox Example")
root.geometry("300x200")
label = ttk.Label(root, text="Select an option:")
label.pack(pady=10)
combo = ttk.Combobox(root, values=["Option 1", "Option 2", "Option 3"])
combo.pack(pady=10)
combo.bind("<<ComboboxSelected>>", on_combobox_select)
root.mainloop()
ttkならこんなに簡単にプルダウンが作れる!
詳しくは以下の記事を見てね!
ttk.Entry
tkinterと使い方は同じ!
以下の記事を参考にしてね!
ttk.Frame
tkinterと使い方は同じ!
以下の記事を参考にしてね!
ttk.Label
tkinterと使い方は同じ!
以下の記事を参考にしてね!
ttk.Labelframe
import tkinter as tk
from tkinter import ttk
# メインウィンドウの作成
root = tk.Tk()
root.title("Labelframe-完全独学Python")
root.geometry("400x200")
# Labelframeの作成
labelframe = ttk.Labelframe(root, text="完全独学Python", padding=(10, 5))
labelframe.pack(padx=10, pady=10, fill="both", expand=True)
# ラベルとエントリーの作成
label = ttk.Label(labelframe, text="Labelframeの中のウィジェットです!")
label.grid(row=0, column=0, padx=5, pady=5, sticky="e")
# メインループの実行
root.mainloop()
tkinterと使い方は同じ!
以下の記事を参考にしてね!
ttk.Menubutton
tkinterと使い方は同じ!
以下の記事を参考にしてね!
ttk.Notebook
import tkinter as tk
from tkinter import ttk
# メインウィンドウの作成
root = tk.Tk()
root.title("Notebook-完全独学Python")
root.geometry("500x300")
# Notebookウィジェットの作成
notebook = ttk.Notebook(root)
# タブ1の作成
frame1 = ttk.Frame(notebook, width=500, height=300)
frame1.pack(fill='both', expand=True)
notebook.add(frame1, text='Tab 1')
# タブ2の作成
frame2 = ttk.Frame(notebook, width=500, height=300)
frame2.pack(fill='both', expand=True)
notebook.add(frame2, text='Tab 2')
# タブ3の作成
frame3 = ttk.Frame(notebook, width=500, height=300)
frame3.pack(fill='both', expand=True)
notebook.add(frame3, text='Tab 3')
# Notebookの表示
notebook.pack(expand=True, fill='both')
# タブ1にウィジェットを追加
label1 = ttk.Label(frame1, text="これはタブ1です", padding=20)
label1.pack()
# タブ2にウィジェットを追加
label2 = ttk.Label(frame2, text="これはタブ2です", padding=20)
label2.pack()
# タブ3にウィジェットを追加
label3 = ttk.Label(frame3, text="これはタブ3です", padding=20)
label3.pack()
# メインループの実行
root.mainloop()
ttkならこんなに簡単にタブが作れる!
詳しくは以下の記事を見てね!
ttk.Panedwindow
tkinterと使い方は同じ!
以下の記事を参考にしてね!
ttk.Progressbar
import tkinter as tk
from tkinter import ttk
import time
def start_progress():
progress.start()
# 進捗バーが一定時間進行します
for i in range(101):
progress['value'] = i
root.update_idletasks()
time.sleep(0.05)
# 進捗バーを停止します
progress.stop()
# メインウィンドウの作成
root = tk.Tk()
root.title("Progressbar-完全独学Python")
root.geometry("300x100")
# Progressbarの作成
progress = ttk.Progressbar(root, orient="horizontal", length=200, mode="determinate")
progress.pack(pady=10)
# Startボタンの作成
start_button = ttk.Button(root, text="Start Progress", command=start_progress)
start_button.pack()
# メインループの実行
root.mainloop()
ボタンを押すと進捗バーが進みだすよ!
詳しくは以下の記事を見てね!
ttk.Radiobutton
tkinterと使い方は同じ!
以下の記事を参考にしてね!
ttk.Scale
tkinterと使い方は同じ!
以下の記事を参考にしてね!
ttk.Scrollbar
tkinterと使い方は同じ!
以下の記事を参考にしてね!
ttk.Separator
import tkinter as tk
from tkinter import ttk
# メインウィンドウの作成
root = tk.Tk()
root.title("Separator-完全独学Python")
root.geometry("300x200")
# 上部のラベルを作成
label1 = ttk.Label(root, text="上部のラベル", padding=10)
label1.pack(pady=10)
# セパレータを作成(水平)
separator = ttk.Separator(root, orient='horizontal')
separator.pack(fill='x', pady=10)
# 下部のラベルを作成
label2 = ttk.Label(root, text="下部のラベル", padding=10)
label2.pack(pady=10)
# セパレータを作成(垂直)
frame = ttk.Frame(root)
frame.pack(pady=10, expand=True, fill='both')
label3 = ttk.Label(frame, text="左のラベル", padding=10)
label3.pack(side='left', padx=10)
separator2 = ttk.Separator(frame, orient='vertical')
separator2.pack(side='left', fill='y', padx=10)
label4 = ttk.Label(frame, text="右のラベル", padding=10)
label4.pack(side='left', padx=10)
# メインループの実行
root.mainloop()
これでttkでウィンドウを分割することができる!
詳しくは以下の記事を見てね!
※記事執筆中…少々お待ちください!
ttk.Sizegrip
import tkinter as tk
from tkinter import ttk
# メインウィンドウの作成
root = tk.Tk()
root.title("Sizegrip-完全独学Python")
root.geometry("300x200")
# ラベルを作成
label = ttk.Label(root, text="右下隅のサイズ変更グリップを試してみてください。", padding=20)
label.pack(expand=True)
# Sizegripの作成
sizegrip = ttk.Sizegrip(root)
sizegrip.pack(side="right", anchor="se")
# メインループの実行
root.mainloop()
右下にマークが出ているね!
これでウィンドウのサイズの変更
ttk.Spinbox
tkinterと使い方は同じ!
以下の記事を参考にしてね!
ttk.Treeview
tkinterと使い方は同じ!
以下の記事を参考にしてね!
まとめ
本記事では、ttkの使い方とそのウィジェットについて紹介しました!
数が多いので、すべて覚える必要はありません!
存在に触れておけば、GUIアプリを作る時に
「そういえば、あんなウィジェットあったな!」
みたいな形で思い出すものです!
ぜひ、挑戦してみてね!
コメント