繁体   English   中英

更改 tkinter 文本小部件中的默认输入语言

[英]Changing the default input language in tkinter text widget

有什么方法可以更改 tkinter 中的默认输入语言?

这是代码:

from tkinter import *

root = Tk()

text = Text(root , width = 65 , height = 20 , font = "consolas 14")
text.pack()

mainloop()

在这里,当我在文本小部件中输入一些文本时,它是用英文输入的。

我想要的是用其他语言输入文本。

有没有办法在 tkinter 中实现这一点?

如果有人可以帮助我,那就太好了。

在我的 MacOS PC 英式键盘上,我可以使用各种组合键来获取德语和法语字符。 Alt-a: å
Alt e 后跟 e:é
Alt u 后接 o:ö 或 u:ü 后接 a:ä 后接 A:Ä
Alt i 后跟一个: â
第 1 步是对此进行试验。

第二个选项如果只需要几个字符 map 他们到例如 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()

第三个选项更彻底的方法可能是打开第二个“键盘”window,它可以将字符发送到文本框。

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()

使用此选项,额外的 window 可以永久打开或在 GUI 中的另一个框架,而不是单独的 window。

可能有特定于操作系统的方法可以更整洁地执行此操作,或者 tkinter 中的选项我不知道,但这应该提供一些可供探索的想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM