是否有办法改变tkinter的默认输入语言?
代码如下:
from tkinter import *
root = Tk()
text = Text(root , width = 65 , height = 20 , font = "consolas 14")
text.pack()
mainloop()
这里,当我在文本小部件中输入一些文本时,它是用英文输入的。
我想用其他语言输入文本。
有没有办法在短期内实现这一点?
如果有人能帮帮我就太好了。
在我的MacOS PC, UK Keyboard上,我可以使用各种键组合来获得德语和法语字符。Alt-a:
Alt e后面跟着e:
Alt u后面跟着o: ö或u: ü后面跟着a: ä后面跟着a: Ä
Alt i后面跟着a:
第一步我想尝试一下。
<第二选项/strong>如果只需要几个字符,则将它们映射到例如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()
<第三选项/strong>更彻底的方法可能是打开第二个"键盘"窗口,可以向文本框发送字符。
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中的另一个框架,而不是一个单独的窗口。
可能有操作系统特定的方法来更整齐地完成这个任务,或者其他我不知道的选项,但这应该给我们一些探索的想法。