简而言之,我尝试输入Windows语言键盘允许的字母(在“ Entry”,“ Text”等输入组件中)(我使用的是“ Latvan(QWERTY)”键盘),但我无法写长字母,例如“ā”,“č”,“ģ”和其他字母。
例如,当我尝试写“ā”时,结果是“â”。
有趣的部分-当我专注于特定的GUI输入时,更改Windows键盘语言(使用“ Alt + Shift”快捷键或手动)两次(例如,从“ Latvan(QWERTY)”更改为“ Russian”)到“ Latvan(QWERTY)”)-然后我就可以写下所有需要的字母了。
我想要的是设置所有输入字段的键盘语言,这样我每次启动GUI程序时都可以写我想要的所有字母而无需执行上述操作。
如果您需要更多信息,或者已经有回答该问题的地方,请发表评论,我会采取相应行动。
编辑1:
我正在使用PyCharm编写我的Python Tkinter代码。我试图根据this guide将必要的键盘分配给程序生成的GUI表单,但是它没有用(我猜是因为我在临时创建的GUI表单上使用了它)。
答案 0 :(得分:0)
我可以使用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_input”上,则系统调用函数“ change_keyboard_lang”,将输入语言从原始语言更改为其他语言,然后又恢复为原始语言-现在我可以写必要的字母了。
这不是最佳解决方案,因为我需要将事件绑定到GUI表单中的每个输入字段,但可以完成工作。如果您有更好的解决方案,请在此处发布。