更改 tkinter 文本小部件中的默认输入语言
Posted
技术标签:
【中文标题】更改 tkinter 文本小部件中的默认输入语言【英文标题】:Changing the default input language in tkinter text widget 【发布时间】:2021-02-15 04:37:06 【问题描述】:有什么方法可以改变 tkinter 的默认输入语言吗?
代码如下:
from tkinter import *
root = Tk()
text = Text(root , width = 65 , height = 20 , font = "consolas 14")
text.pack()
mainloop()
在这里,当我在文本小部件中输入一些文本时,它是用英文输入的。
我想要的是用其他语言输入文本。
有没有办法在 tkinter 中实现这一点?
如果有人能帮助我,那就太好了。
【问题讨论】:
我不确定,但你试过用一些德语字体font =
吗?
我不知道有什么字体可以显示德语字符。
即使有可以显示德语字符的字体,我怎么能输入其他语言呢?我问这个是因为我在我的问题中提到了“德语”作为一个例子。
输入语言是操作系统级别的设置。
使用法语键盘,我可以在 GUI 中使用键或组合键键入 éèáàâô。您的问题是如何生成键盘不可用的字符?
【参考方案1】:
在我的 MacOS PC 英式键盘上,我可以使用各种组合键来获取德语和法语字符。 Alt-a: å Alt e 后跟 e:é Alt u 后接 o:ö 或 u:ü 接 a:ä 接 A:Ä Alt i 后跟 a: â第 1 步 将对此进行试验。
第二个选项如果只需要几个字符,请将它们映射到例如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 中的选项我不知道,但这应该会提供一些可供探索的想法。
【讨论】:
您好,感谢您的回答。虽然这有帮助,但这并不是我想要的。如果我使用键盘快捷键,我将无法以我想要的任何语言键入文本。我想要的是用户应该能够选择他/她想要的任何语言并根据该语言更改键盘输入。有什么办法可以实现吗? 我认为您需要研究如何在操作系统中使用不同的假定键盘布局。你似乎想要例如使用英国键盘键入文字处理器,但切换到希腊键盘以在您的 GUI 中键入,使用物理上相同的键盘。我不知道该怎么做。以上是关于更改 tkinter 文本小部件中的默认输入语言的主要内容,如果未能解决你的问题,请参考以下文章
Tkinter:如何将文本小部件中输入的文本保存到新窗口中?