入力方式については、tkinter ではサポートされてない為、
プラットフォーム毎に異なる対応が必要です。
独自に実装しようとすると、
- プラットフォーム固有のAPIの知識
- C言語の知識(構造体、メモリ周り) 辺りは必須になってきます。
クロスプラットフォーム対応が必要な場合は、
予め対応してるライブラリを探した方が良いかもしれません。
windowsの場合の実装例
python
1
2def set_ime_status_win32(hwnd, status=1):
3 """日本語入力をonにする(windows用)"""
4 import ctypes
5 try:
6 imm32 = ctypes.windll.imm32
7 except FileNotFoundError:
8 return
9
10 try:
11 himc = imm32.ImmGetContext(hwnd)
12 imm32.ImmSetOpenStatus(himc, status)
13 finally:
14 imm32.ImmReleaseContext(hwnd, himc)
15
16
17import tkinter as tk
18
19root = tk.Tk()
20entry = tk.Entry(root)
21entry.pack()
22
23# 入力フォーカス時に日本語入力をonにするイベント設定。
24entry.bind("<FocusIn>",
25 lambda e:set_ime_status_win32(int(entry.winfo_id())))
26
27
28root.after_idle(entry.focus_set)
29root.mainloop()
30
※ 入力をオンにする部分のみのデモ。
未決定の入力を残したままフォーカスを移動した場合の挙動の制御等は未対応。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/07 23:26