如何为条目或任何其他输入字段指定输入语言?

2024-10-03 23:27:19 发布

您现在位置:Python中文网/ 问答频道 /正文

简而言之,我尝试键入Windows语言键盘(我使用的是Latvan(QWERTY)键盘)允许的字母(在“Entry”、“Text”等输入组件中),但我不能写出像“ā”、“č”、“ģ”等长字母。你知道吗

例如,当我试图写“ā”时,结果是“ā”。你知道吗

有趣的一点是,当我专注于特定的GUI输入,并将Windows键盘语言(使用“Alt+Shift”快捷键或手动)更改两次(例如,从“Latvan(QWERTY)”更改为“Russian(俄语)”再更改为“Latvan(QWERTY)”),然后我就可以写下所有需要的字母了。你知道吗

我想要的是设置所有输入字段的键盘语言,这样我就可以写我想要的所有字母,而不必在每次启动GUI程序时做上面提到的事情。你知道吗

如果您需要更多的信息或已经有这个问题的答案,请留下评论,我会采取相应的行动。你知道吗

编辑1:

我正在使用PyCharm编写Python Tkinter代码。我试图根据this guide为程序生成的GUI表单分配必要的键盘,但没有成功(我猜是因为我在临时创建的GUI表单上使用了它)。你知道吗


Tags: text程序语言表单键入shiftwindows字母
1条回答
网友
1楼 · 发布于 2024-10-03 23:27:19

我能用pynput解决我的问题。你知道吗

以下是我最终代码的简化版本:

from tkinter import *
from pynput.keyboard import Key, Controller

def change_keyboard_lang(event):
    keyboard = Controller()
    for i in range(2):
        keyboard.press(Key.alt)
        keyboard.press(Key.shift_l)
        keyboard.release(Key.shift_l)
        keyboard.release(Key.alt)

root = Tk()

word_input = Entry(root)
word_input.focus_set()
word_input.bind("<FocusIn>", change_keyboard_lang)
word_input.pack()

root.mainloop()

简而言之,如果光标集中在输入字段“word\u input”上,系统会调用“change\u keyboard\u lang”函数,将输入语言从原来的语言更改为其他语言,然后再更改为原来的语言—现在我可以编写必要的字母了。你知道吗

这不是最好的解决方案,因为我需要将事件绑定到GUI表单中的每个输入字段,但它完成了任务。如果你有更好的解决方案,请张贴在这里。你知道吗

相关问题 更多 >