python win32api.LoadKeyboardLayout(),在IDLE中不改变语言?

2 投票
1 回答
3246 浏览
提问于 2025-04-16 21:43

有人能帮我一下吗...我正在尝试开始我的第一个编程项目。这个项目会用Python来实现。

我需要一个文本框(我用的是wxpython)。如果用户在这个文本框里输入任何文字,我希望它能显示为阿拉伯语。我想通过在光标进入这个文本框时,自动把用户的键盘布局切换为阿拉伯语来实现这个功能。

于是我找到了一个叫pywin32的模块,它有一个函数叫LoadKeyboardLayout()。我想在IDLE里测试一下,看看能不能让它接受阿拉伯语文本,看看这个功能是否有效。所以我在IDLE里输入:

win32api.LoadKeyboardLayout('00000401',1)

然后它返回了67175425,这是十六进制'4010401'的十进制值,我相信这是阿拉伯语的区域ID。所以我心想,哇!我成功了,但当我在IDLE窗口里尝试输入时,还是继续输入正常的英文字符。

有人能帮我解释一下我的错误,并给我指个好的解决办法吗?


更新

好吧,自从我发了这个问题后,我一直在尝试解决这个问题。没有找到办法。

然后,我想,“算了,别在IDLE里快速测试了,我就直接在我的项目源代码里试试。”

结果——第一次就成功了,达到了我想要的效果。

接着我在另一个IDE的解释窗口里试了一下,结果也是立刻就成功了!

所以显然我的问题出在IDLE的解释模式上。有人能解释一下为什么在IDLE的命令行里不行吗??

1 个回答

5
  1. 在Windows中,键盘布局的设置是针对每个程序的,并且会从父程序继承。
  2. IDLE会在一个和它的界面分开的后台进程中运行你的Python脚本。

所以你已经成功地改变了运行你脚本的后台Python进程的键盘布局,但IDLE的界面布局并没有改变。

撰写回答