---
title: Tkinterをもう一度使いやすくする
tags:  #アクセシビリティ #python  
author: [Takuya Nishimoto](https://www.docswell.com/user/nishimotz)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/47ZLWGGNJ3.jpg?width=480
description: Tkinterをもう一度使いやすくする  書きやすさとアクセシビリティ  Takuya Nishimoto @nishimotz  @24motz   PyCon JP 2026
published: August 21, 26
canonical: https://www.docswell.com/s/nishimotz/KR8WRR-2026-08-21-221305
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/47ZLWGGNJ3.jpg)

Tkinterをもう一度使いやすくする
書きやすさとアクセシビリティ
Takuya Nishimoto
@nishimotz
@24motz
PyCon JP 2026
1 / 31


# Page. 2

![Page Image](https://bcdn.docswell.com/page/YJ6WGYY9JV.jpg)

西本卓也
2 / 31


# Page. 3

![Page Image](https://bcdn.docswell.com/page/GJ5MVGGDJ4.jpg)

リポジトリ
nishimotz/hello-tkinter-tcl
nishimotz/nextpytk
3 / 31


# Page. 4

![Page Image](https://bcdn.docswell.com/page/LE3WDRPQE5.jpg)

きょう話すこと
Tkinter の正体
テーマとレイアウト
nextpytk
アクセシビリティ
最新情報
4 / 31


# Page. 5

![Page Image](https://bcdn.docswell.com/page/8EDKPYLW7G.jpg)

スクリーンリーダー
NonVisual Desktop Access
NVDA日本語版
NVDA日本語チーム
libkuraji 日本語点訳エンジン
WAIC ウェブアクセシビリティ基盤委員会
5 / 31


# Page. 6

![Page Image](https://bcdn.docswell.com/page/V7PKN62XJ8.jpg)

shuaruta.com
KCトーカー2
nuime.net (スクリーンリーダー自動化)
mailgarden.org (メーリングリスト)
YouTube @nui_no_oheya
6 / 31


# Page. 7

![Page Image](https://bcdn.docswell.com/page/2JVVK3D3JQ.jpg)

PyCon JP 関連活動
PyCon mini Hiroshima
Python Boot Camp コアスタッフ
すごい広島 with Python
PyCon JP 2024 登壇
PyCon JP 2025 座長 + スプリント
7 / 31


# Page. 8

![Page Image](https://bcdn.docswell.com/page/5EGLQ3YYJL.jpg)

Tcl/Tk
1988年 UNIX のスクリプト言語 Tcl
1991年 X11 の GUI ツールキット Tk
John Ousterhout
A Philosophy of Software Design
近年 Bob Martin との対談も話題に
8 / 31


# Page. 9

![Page Image](https://bcdn.docswell.com/page/4JQYK5M67P.jpg)

Tkinter
Python から Tcl/Tk を使いやすくする
Python 公式バイナリは Tcl/Tk 自体を同梱
電池入ってます
Python 3.14 で Tk 9.0 に移行
9 / 31


# Page. 10

![Page Image](https://bcdn.docswell.com/page/K74WP9VME1.jpg)

こんな連携もできる
Matplotlib — グラフを GUI に埋め込み
NumPy / Pandas — データ処理と可視化
Pillow — 画像の表示・加工
OpenCV — カメラ映像をリアルタイム表示
10 / 31


# Page. 11

![Page Image](https://bcdn.docswell.com/page/LJ1Y9K3YEG.jpg)

ボタンを表示する
# Tcl
pack [button .button -text &quot;Click Me&quot;]
# Tkinter
ttk.Button(root, text=&quot;Click Me&quot;).pack()
11 / 31


# Page. 12

![Page Image](https://bcdn.docswell.com/page/GJWGQDP172.jpg)

Python から Tcl を使う
import tkinter
tcl = tkinter.Tcl()
tcl.eval(&#039;&#039;&#039;
proc greet {name} {
return &quot;hello $name&quot;
}
&#039;&#039;&#039;)
print(tcl.eval(&#039;greet takuya&#039;))
12 / 31


# Page. 13

![Page Image](https://bcdn.docswell.com/page/4EZLWGKX73.jpg)

Tcl で拡張する
Python / tkinter
Tcl インタープリタ
Tcl パッケージ
(root.tk)
demobox
demobox.tm
13 / 31


# Page. 14

![Page Image](https://bcdn.docswell.com/page/Y76WGYQP7V.jpg)

ジオメトリマネージャー
pack: 端から詰める
place: 座標 (x, y)
grid: 行と列
A
B
B
A
B
A
14 / 31


# Page. 15

![Page Image](https://bcdn.docswell.com/page/G75MVGRP74.jpg)

pack の空洞 (cavity) モデル
空洞は expand するウィジェットに分配
① 空の状態
② A を top に
③ B を bottom に
A
A
空洞
空洞
空洞
B
15 / 31


# Page. 16

![Page Image](https://bcdn.docswell.com/page/9J293YDZER.jpg)

grid の weight
行・列ごとに余った空間を比率で分配
① weight 1:1
② weight 1:2
A
A
B
等分
B
Bが2倍
③ weight 0:1
A
B
余白は B へ
16 / 31


# Page. 17

![Page Image](https://bcdn.docswell.com/page/DEY41G2NJM.jpg)

TTK とネイティブ描画
TTK = Themed Tk
テーマ = ウィジェットの look and feel の抽象化
クラシック Tk と TTK はいろいろ挙動が違う
ネイティブ描画テーマ
Windows Mac に似せて描画する
ネイティブなUIオブジェクトではない
色と大きさはカスタマイズしたほうがいい
土台として clam が使いやすい
17 / 31


# Page. 18

![Page Image](https://bcdn.docswell.com/page/VJNY2G8V78.jpg)

Windows 11 + TTK clam
18 / 31


# Page. 19

![Page Image](https://bcdn.docswell.com/page/YE9P1WKVJ3.jpg)

nextpytk で GUI 入門
uv run --with nextpytk python
19 / 31


# Page. 20

![Page Image](https://bcdn.docswell.com/page/GE8D4NR4ED.jpg)

FizzBuzz
def fizzbuzz(n):
if n % 15 == 0: return &quot;FizzBuzz&quot;
if n % 3 == 0: return &quot;Fizz&quot;
if n % 5 == 0: return &quot;Buzz&quot;
return str(n)
20 / 31


# Page. 21

![Page Image](https://bcdn.docswell.com/page/LELM6PKV7R.jpg)

ボタンを押すと何かを実行する
import nextpytk
app = nextpytk.TkApp()
@app.button(&quot;hello&quot;)
def on_hello():
n = app.state.get(&quot;n&quot;, 0) + 1
return {&quot;n&quot;: n, &quot;hello&quot;: fizzbuzz(n)}
app.run()
21 / 31


# Page. 22

![Page Image](https://bcdn.docswell.com/page/4JMY542NJW.jpg)

折り返しレイアウト
幅が狭くなっても見切れない、横スクロール不
要
幅が広い → 1行に収まる
A
B
C
D
幅が狭い → 折り返す
A
B
C
D
22 / 31


# Page. 23

![Page Image](https://bcdn.docswell.com/page/PJR93WM479.jpg)

キーボードで操作したい
Tab / Shift+Tab でフォーカス移動
Space / Enter でボタン操作
矢印キーで文字・選択を操作
フォーカスを可視化する
23 / 31


# Page. 24

![Page Image](https://bcdn.docswell.com/page/PEXQ4PVZJX.jpg)

WCAGを「制約」として使う
判別可能
SC 1.4.3 コントラスト（最低限）
SC 1.4.10 リフロー
SC 2.1.1 キーボード操作可能
ナビゲーション可能
SC 2.4.3 フォーカス順序
SC 2.4.7 フォーカスの可視化
ポインティングデバイス
SC 2.5.8 ターゲットのサイズ（最低限）
24 / 31


# Page. 25

![Page Image](https://bcdn.docswell.com/page/3EK9ZDQVED.jpg)

スクリーンリーダーで操作したい
Tk 9.0 まではスクリーンリーダーに対応していない
アクセシビリティ API からは画像と認識される
デスクトップ自動化も UI Automation を使う
TIP 733
標準の GUI 部品がスクリーンリーダー対応
Tk 9.1.0 2026年9月予定
25 / 31


# Page. 26

![Page Image](https://bcdn.docswell.com/page/L73WDRKQ75.jpg)

CPython でも対応が進行中
gh-145578
Prepare Tkinter 9.1 screenreader support
`tk accessible`（TIP 733）に対応
Python 3.16 ターゲット
26 / 31


# Page. 27

![Page Image](https://bcdn.docswell.com/page/87DKPY3WJG.jpg)

アクセシブル属性の設定 API
Canvas カスタムウィジェットに対応
PR #153247
オブジェクト指向方式: ウィジェットに `.accessible` プロパティ
`entry.accessible.name = &#039;User name&#039;`
属性: role / name / description / value / state / action / help
PR #153246
フラット方式: `Misc` に 18 個のメソッド追加
`tk_set_acc_role` / `tk_get_acc_role` など
27 / 31


# Page. 28

![Page Image](https://bcdn.docswell.com/page/VJPKN64XE8.jpg)

TIP 733 のバックエンド
Linux:
ATK（GNOME Accessibility Toolkit）→ Orca
Windows:
MSAA（Microsoft Active Accessibility）→ NVDA
Narrator (UIA) → 体験が異なる
macOS:
NSAccessibility → VoiceOver
CPython 側の PR で検証済みなのは Linux のみ
28 / 31


# Page. 29

![Page Image](https://bcdn.docswell.com/page/2EVVK3X3EQ.jpg)

← / → でテキストカーソルが動くか
macOS / Windows
開発版の Entry / TEntry を検証した
Tcl/Tk プロジェクトに問題を報告
チケット e4b27e35 Fixed
テキスト編集
ステータスメッセージ
NVDA 日本語化の初期を思い出す
29 / 31


# Page. 30

![Page Image](https://bcdn.docswell.com/page/57GLQ3VYEL.jpg)

Tkinter をもう一度使いやすくする
届く成果は価値とアクセシビリティの掛け算
現代の要求を満たすGUI
ダークモード、高解像度
文字サイズ、リサイズ、リフロー、多言語化
デスクトップ自動化、スクリーンリーダー
30 / 31


# Page. 31

![Page Image](https://bcdn.docswell.com/page/4EQYK566JP.jpg)

アクセシビリティ サポーテッド
WCAG と実装に興味があればどうぞ
ASテスト体験会
9月17日 15時-17時 オンライン
https://waic.connpass.com/
31 / 31


