在我的 MacOS PC 英式键盘上,我可以使用各种组合键来获取德语和法语字符。Alt-a:å
Alt e 后跟 e:é
Alt u 后跟 o:ö 或 u:ü 后跟 a:ä 由 A:Ä
Alt i 后跟 a:â
第一步是对此进行实验。
第二个选项如果只需要几个字符,请将它们映射到例如 F 键
import tkinter as tk
root = tk.Tk()
text = tk.Text( root, width = 50, height = 20, font = ( 'Arial', 20 ) )
text.grid()
key_map = { 'F5': 'ü', 'F6': 'ö', 'F13': 'ß', 'F14': 'á', 'F15': 'é' }
# Map the function keys to the characters required.
# f5, f6, f13, etc return the mapped characters.
# The other F keys are used for system activities from my keyboard.
def do_key( event ):
char = key_map.get( event.keysym )
if char:
text.insert( tk.INSERT, char )
return 'break' # Stops the event being passed to the text box.
text.bind( '<KeyPress>', do_key )
root.mainloop()
第三个选项更彻底的方法可能是打开第二个“键盘”窗口,可以将字符发送到文本框。
import tkinter as tk
root = tk.Tk()
text = tk.Text( root, width = 50, height = 20, font = ( 'Arial', 20 ) )
text.grid()
key_map = { 'F5': 'ü', 'F6': 'ö', 'F13': 'ß', 'F14': 'á', 'F15': 'é' }
def make_keys( char ):
def do_key():
text.insert( tk.INSERT, char )
return 'break'
return do_key
def get_key( event ):
master = tk.Toplevel( root )
for col, v in enumerate( key_map.values()):
tk.Button( master, text = v, command = make_keys( v )).grid( row = 0, column = col )
return 'break'
text.bind( '<KeyPress-F5>', get_key )
# Press F5 in the text box to open the keyboard.
root.mainloop()
使用此选项,额外的窗口可以永久打开或在 GUI 中打开另一个框架,而不是单独的窗口。
可能有操作系统特定的方法可以更整洁地执行此操作,或者 tkinter 中的选项我不知道,但这应该提供一些想法来探索。