python win32api.LoadKeyboardLayout(),不会改变IDLE shell中的语言?

时间:2011-07-17 15:59:45

标签: python winapi keyboard python-idle

有人可以帮助我吗...我正在尝试开始我的第一个编程项目。它将在python中实现。

我需要一个文本框(我正在使用wxpython)。如果用户在此文本框中输入任何文本,那么我希望它显示为阿拉伯语。我希望通过在光标落在给定文本框中时自动将用户键盘更改为阿拉伯语布局来实现此目的。

所以我找到了这个pywin32模块,它有一个函数LoadKeyboardLayout() 所以我试图在IDLE中测试它,看看我是否可以让它接受阿拉伯语文本到IDLE,看它是否有效。所以我进入IDLE:

win32api.LoadKeyboardLayout('00000401',1)

然后返回67175425,十六进制的十进制等值:'4010401'whcih我相信是阿拉伯语的区域设置ID。所以我觉得哇!我已经完成了,但是当我在此之后尝试输入时,在IDLE窗口中,它继续输入正常的英文字符。

有人可以解释我的错误并指导我找到一个好的解决方案。


更新

好吧,自从发布该死的问题以来,我一直在努力解决这个问题。 没运气。 然后,我想,“好吧,拧紧它,而不是在IDLE中快速测试它,我将在原地,在我的项目源代码中尝试它。” WTF - 它第一次工作,给出我想要的确切行为。 然后我在解释窗口中的另一个IDE中尝试了它,并且再次,IT工作直接进行!

很明显,我的问题在于IDLE,在其解释模式中。 任何人都可以解释为什么它在IDLE shell中不起作用???

1 个答案:

答案 0 :(得分:5)

  1. Windows中的键盘布局设置是按进程进行的(并从父进程继承)
  2. IDLE在与GUI无关的后台进程中运行您的Python脚本
  3. 因此,您已成功更改了运行脚本的后台Python进程的键盘布局,而不是IDLE GUI的键盘布局。