有人可以帮帮我吗...我正在尝试开始我的第一个编程项目。它将在python中实现。
我需要有一个文本框(我正在使用wxpython进行操作)。如果用户在此文本框中输入任何文本,那么我希望它显示为阿拉伯语。我想通过在光标停留在给定的文本框中时自动将用户的键盘更改为阿拉伯语布局来实现此目的。
所以我找到了这个pywin32模块,它具有功能LoadKeyboardLayout()因此,我尝试在IDLE中对此进行测试,以查看是否可以使其接受IDLE中的阿拉伯文本,以查看其是否有效。所以我进入IDLE:
win32api.LoadKeyboardLayout('00000401',1)
然后返回67175425,即十六进制的十进制等效值:'4010401',我认为这是阿拉伯语的语言环境ID。所以我想哇!我已经完成了,但是当我尝试在此之后键入时,在IDLE窗口中,它将继续键入普通的英文字符。
有人可以解释我的错误,并指导我寻求一个好的解决方案。
好的,自发布该死的问题以来,我一直在努力解决这个问题。没运气。然后,我想,“好吧,拧紧它,而不是在IDLE中对其进行快速测试,我将在项目的源代码中就地试用它。”WTF-它第一次起作用,给出了我想要的确切行为。然后,我在另一个IDE的解释窗口中进行了尝试,然后再次尝试成功!
很明显,我的问题是在IDLE的解释模式下。谁能解释为什么它在IDLE shell中不起作用???
因此,您已成功更改了正在运行脚本的后台Python进程的键盘布局,但未更改IDLE的GUI。
我设法通过键盘事件和快捷方式分配来做到这一点。
注意:
如果“您的应用程序”是一个外部实用程序(我用Python编写了我的应用程序),那么它一定不能调用窗口,否则/ your-app /会占据焦点,并且会改变语言。在python中,我通过使用无GUI的pyw脚本文件名解决了该问题。 (或使用pythonw.exe调用脚本)
本文显示了如何在python中发送键盘事件:
https://python-decompiler.com/article/2012-11/how-to-generate-keyboard-events-in-python