リスト : Ttk Widget の簡単な使用例
import tkinter as tk
import tkinter.ttk as ttk
import sys
root = tk.Tk()
style = ttk.Style()
# print(style.theme_names())
if len(sys.argv) >= 2:
    theme = sys.argv[1]
    style.theme_use(theme)
else:
    theme = style.theme_use()
style.configure('.', font = ('', 12))   # Ttk Widget のフォントの大きさを 12 に変更
# ラジオボタン用
v = tk.IntVar()
v.set(0)
# チェックボタン用
opts = [tk.BooleanVar() for _ in range(4)]
for x in range(4): opts[x].set(True)
# テーマ表示用ラベル
la = ttk.Label(text = theme)
la.pack()
# ボタン類の配置
f0 = ttk.LabelFrame(root, text = 'Buttons')
f1 = ttk.LabelFrame(root, text = 'CheckButtons')
f2 = ttk.LabelFrame(root, text = 'RadioButtons')
for x in range(4):
    ttk.Button(f0, text = 'button {}'.format(x)).pack()
    ttk.Radiobutton(f1, text = 'radiobutton {}'.format(x), value = x, variable = v).pack()
    ttk.Checkbutton(f2, text = 'checkbutton {}'.format(x), variable = opts[x]).pack()
f0.pack(padx = 5, pady = 5, side = tk.LEFT)
f1.pack(padx = 5, pady = 5, side = tk.LEFT)
f2.pack(padx = 5, pady = 5, side = tk.LEFT)
root.mainloop()
   
   
 
   
 
   
 
リスト : Ttk Widget の簡単な使用例
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
style = ttk.Style()
style.theme_use('winnative')
style.configure('test1.TLabel', font = ('Ricty Diminished', 12))
style.configure('test2.TLabel', font = ('Ricty Diminished', 14), foreground = 'blue')
style.configure('test3.TLabel', font = ('Ricty Diminished', 16, 'italic'), foreground = 'green')
str = 'Hello, world, こんにちは世界'
ttk.Label(root, text = str, style = 'test1.TLabel').pack()
ttk.Label(root, text = str, style = 'test2.TLabel').pack()
ttk.Label(root, text = str, style = 'test3.TLabel').pack()
root.mainloop()
  
Combobox(widget, option = value, ...)
| height | リストボックスの行数 | 
| width | エントリーの文字数 | 
| state | 'normal' : エントリーとリストボックスの両方から入力できる 'readonly' : リストボックスのみ有効 'disabled' : どちらも無効 | 
| values | リストボックスに表示するデータを格納したタプル (またはリスト) | 
リスト : コンボボックスの使用例
import tkinter as tk
import tkinter.ttk as ttk
import datetime
root = tk.Tk()
style = ttk.Style()
style.configure('.', font = ('', 14))
label_buff = tk.StringVar()
label_buff.set('')
year_buff = tk.StringVar()
year_buff.set('1970')
month_buff = tk.StringVar()
month_buff.set('1')
day_buff = tk.StringVar()
day_buff.set('1')
la = ttk.Label(root, textvariable = label_buff)
la.pack()
ttk.Label(root, text = " 年: ").pack(side = tk.LEFT)
year_cb = ttk.Combobox(root, textvariable = year_buff, width = 8, value = tuple(range(1970, 2031)))
year_cb.pack(side = tk.LEFT)
ttk.Label(root, text = " 月: ").pack(side = tk.LEFT)
month_cb = ttk.Combobox(root, textvariable = month_buff, width = 8, height = 12, value = tuple(range(1, 13)))
month_cb.pack(side = tk.LEFT)
ttk.Label(root, text = " 日: ").pack(side = tk.LEFT)
day_cb = ttk.Combobox(root, textvariable = day_buff, width = 8, value = tuple(range(1, 32)))
day_cb.pack(side = tk.LEFT)
# 日付の確認
def check_date(y, m, d):
    try:
        datetime.date(int(y), int(m), int(d))
        return True
    except Exception:
        return False
# 入力データの表示
def get_item(event):
    if check_date(year_cb.get(), month_cb.get(), day_cb.get()):
        label_buff.set('{} 年 {} 月 {} 日'.format(year_cb.get(), month_cb.get(), day_cb.get()))
    else:
        label_buff.set('Input Error')
year_cb.bind('<<ComboboxSelected>>', get_item)
year_cb.bind('<Return>', get_item)
month_cb.bind('<<ComboboxSelected>>', get_item)
month_cb.bind('<Return>', get_item)
day_cb.bind('<<ComboboxSelected>>', get_item)
day_cb.bind('<Return>', get_item)
get_item(None)
root.mainloop()
   初期状態
 初期状態
 日付の入力
 日付の入力
 エラー
 エラー
リスト : ノートブックの使用例 (1)
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
style = ttk.Style()
style.configure("TButton", font = ('', 16))
style.configure("TRadiobutton", font = ('', 16))
style.configure("TCheckbutton", font = ('', 16))
v = tk.IntVar()
v.set(0)
opts = [tk.BooleanVar() for _ in range(4)]
for x in range(4): opts[x].set(True)
# ノートブック
nb = ttk.Notebook(root)
nb.pack()
# ボタン類の配置
f0 = ttk.Frame(root)
f1 = ttk.Frame(root)
f2 = ttk.Frame(root)
for x in range(4):
    ttk.Button(f0, text = 'button {}'.format(x)).pack()
    ttk.Radiobutton(f1, text = 'radiobutton {}'.format(x), value = x, variable = v).pack()
    ttk.Checkbutton(f2, text = 'checkbutton {}'.format(x), variable = opts[x]).pack()
nb.add(f0, text = 'Button', padding = 20)
nb.add(f1, text = 'Radio', padding = 20)
nb.add(f2, text = 'Check', padding = 20)
root.mainloop()
 初期状態 (Button が選択されている)
 初期状態 (Button が選択されている)
 Radio を選択
 Radio を選択
 Check を選択
 Check を選択
リスト : ノートブックの使用例 (2)
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
root.option_add('*Text.font', ('', 14))
#style = ttk.Style()
#style.configure(".", font = ('', 12))
# 生成したテキストウィジェットの個数
text_count = 0
# ノートブック
nb = ttk.Notebook(root)
# テキストウィジェットを追加
def new_text():
    global text_count
    tw = tk.Text(width = 40, height = 10)
    text_count += 1
    nb.add(tw, text = 'Memo{}'.format(text_count))
    nb.select(tw)
# テキストウィジェットを削除
def del_text():
    nb.forget('current')
# ボタン
fr = ttk.Frame()
ttk.Button(fr, text = 'New', command = new_text).pack(side = tk.LEFT)
ttk.Button(fr, text = 'Del', command = del_text).pack(side = tk.LEFT)
# 配置
fr.pack(anchor = tk.W)
nb.pack()
root.mainloop()
   初期状態
 初期状態
 Memo1 を生成
 Memo1 を生成
 Memo2 を生成
 Memo2 を生成
 Memo3 を生成して Memo2 を削除
 Memo3 を生成して Memo2 を削除
リスト : プログレスバーの使用例
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
var = tk.IntVar()
var.set(0)
pb1_id = None
def exec_pb1():
    global pb1_id
    var.set(var.get() + 1)
    if var.get() < 100:
        pb1_id = root.after(40, exec_pb1)
def start_pb1():
    var.set(0)
    exec_pb1()
def stop_pb1():
    global pb1_id
    if pb1_id is not None:
        root.after_cancel(pb1_id)
        pb1_id = None
pb1 = ttk.Progressbar(root, length = 200, variable = var)
pb2 = ttk.Progressbar(root, length = 200, mode = 'indeterminate')
pb1.pack()
f1 = ttk.Frame()
ttk.Button(f1, text = 'Start', command = start_pb1).pack(side = tk.LEFT)
ttk.Button(f1, text = 'Stop', command = stop_pb1).pack(side = tk.LEFT)
f1.pack()
pb2.pack()
f2 = ttk.Frame()
ttk.Button(f2, text = 'Start', command = lambda : pb2.start(10)).pack(side = tk.LEFT)
ttk.Button(f2, text = 'Stop',  command = lambda : pb2.stop()).pack(side = tk.LEFT)
f2.pack()
root.mainloop()
   初期状態
 初期状態
 途中経過
 途中経過
 pb1 が終了し、pb2 を停止した状態
 pb1 が終了し、pb2 を停止した状態
リスト : ツリービューの簡単な使用例 (1)
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
style = ttk.Style()
style.configure('.', font = ('', 12))
tview = ttk.Treeview(root, columns = ('Name', 'Height'))
tview.column('#0', width = 50)
tview.column('Name', anchor = 'w', width = 100)
tview.column('Height', anchor = 'e', width = 50)
tview.heading('#0', text = "クラス")
tview.heading('Name', text = "名前")
tview.heading('Height', text = "身長")
id = tview.insert('', 'end', text = 'A')
tview.insert(id, 'end', values = ('Ada', 148.7))
tview.insert(id, 'end', values = ('Hanna', 154.2))
tview.insert(id, 'end', values = ('Miranda', 148.2))
id = tview.insert('', 'end', text = 'B')
tview.insert(id, 'end', values = ('Alice', 149.5))
tview.insert(id, 'end', values = ('Janet', 147.8))
tview.insert(id, 'end', values = ('Sara', 153.1))
id = tview.insert('', 'end', text = 'C')
tview.insert(id, 'end', values = ('Carey', 133.7))
tview.insert(id, 'end', values = ('Linda', 154.6))
tview.insert(id, 'end', values = ('Tracy', 138.2))
id = tview.insert('', 'end', text = 'D')
tview.insert(id, 'end', values = ('Ellen', 157.9))
tview.insert(id, 'end', values = ('Maria', 159.1))
tview.insert(id, 'end', values = ('Violet', 138.7))
sb = ttk.Scrollbar(root, orient = 'v', command = tview.yview)
tview.configure(yscrollcommand = sb.set)
tview.pack(side = tk.LEFT)
sb.pack(side = tk.LEFT, fill = tk.Y)
root.mainloop()
   初期状態
 初期状態
 クラス A を表示
 クラス A を表示
 クラス A と C を表示
 クラス A と C を表示
 全クラスを表示
 全クラスを表示
set(item, column = None, value = None)
リスト : 身長の更新機能を追加
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
style = ttk.Style()
style.configure('.', font = ('', 12))
# グローバル変数
buff1 = tk.StringVar()
buff1.set('')
buff2 = tk.StringVar()
buff2.set('')
select_item = None
fr = ttk.Frame()
ttk.Label(fr, textvariable = buff1).pack(side = tk.LEFT)
e = ttk.Entry(fr, width = 8, textvariable = buff2)
e.pack(side = tk.LEFT)
fr.pack()
tview = ttk.Treeview(root, columns = ('Name', 'Height'))
tview.column('#0', width = 50)
tview.column('Name', anchor = 'w', width = 100)
tview.column('Height', anchor = 'e', width = 50)
tview.heading('#0', text = "クラス")
tview.heading('Name', text = "名前")
tview.heading('Height', text = "身長")
id = tview.insert('', 'end', text = 'A')
tview.insert(id, 'end', values = ('Ada', 148.7))
tview.insert(id, 'end', values = ('Hanna', 154.2))
tview.insert(id, 'end', values = ('Miranda', 148.2))
id = tview.insert('', 'end', text = 'B')
tview.insert(id, 'end', values = ('Alice', 149.5))
tview.insert(id, 'end', values = ('Janet', 147.8))
tview.insert(id, 'end', values = ('Sara', 153.1))
id = tview.insert('', 'end', text = 'C')
tview.insert(id, 'end', values = ('Carey', 133.7))
tview.insert(id, 'end', values = ('Linda', 154.6))
tview.insert(id, 'end', values = ('Tracy', 138.2))
id = tview.insert('', 'end', text = 'D')
tview.insert(id, 'end', values = ('Ellen', 157.9))
tview.insert(id, 'end', values = ('Maria', 159.1))
tview.insert(id, 'end', values = ('Violet', 138.7))
sb = ttk.Scrollbar(root, orient = 'v', command = tview.yview)
tview.configure(yscrollcommand = sb.set)
tview.pack(side = tk.LEFT)
sb.pack(side = tk.LEFT, fill = tk.Y)
# 生徒の選択
def select_student(event):
    global select_item
    x = tview.selection()[0]
    d = tview.set(x)
    if d:
        buff1.set(d['Name'])
        buff2.set(d['Height'])
        select_item = x
    else:
        buff1.set('')
        buff2.set('')
        select_item = None
# 身長の更新
def update_height(event):
    if select_item:
        tview.set(select_item, 'Height', buff2.get())
# バインディング
e.bind('<Return>', update_height)
tview.bind('<<TreeviewSelect>>', select_student)
root.mainloop()
   Alice を選択
 Alice を選択
 エントリーで身長を入力
 エントリーで身長を入力
 リターンキーで更新
 リターンキーで更新