python win32api.LoadKeyboardLayout (), не меняется язык в оболочке IDLE? - PullRequest
2 голосов
/ 17 июля 2011

Может кто-нибудь помочь мне, пожалуйста ... Я пытаюсь начать свой первый программный проект.Это будет реализовано в Python.

Мне нужно текстовое поле (для которого я использую wxpython).Если пользователь вводит какой-либо текст в это текстовое поле, я хочу, чтобы он отображался как арабский.Я хотел сделать это, автоматически изменяя пользовательскую клавиатуру на арабскую раскладку, когда курсор попадает в данное текстовое поле.

Итак, я нашел этот модуль pywin32, который имеет функцию LoadKeyboardLayout (), поэтому я пытаюсь проверитьэто в IDLE, чтобы посмотреть, смогу ли я заставить его принимать арабский текст в IDLE, чтобы увидеть, работает ли он.Поэтому я ввожу в IDLE:

win32api.LoadKeyboardLayout('00000401',1)

Затем возвращается 67175425, десятичный эквивалент шестнадцатеричного числа: «4010401», что, по-моему, является идентификатором локали для арабского языка.Так что я думаю вау!Я сделал это, но когда я пытаюсь набрать после этого в окне IDLE, он продолжает печатать обычные английские символы.

Может кто-нибудь объяснить, пожалуйста, мои ошибки и направить меня к хорошему решению.


ОБНОВЛЕНИЕ

Хорошо, я пытался решить эту проблему с тех пор, как опубликовал этот чертов вопрос.Неудачно.Затем я подумал: «Хорошо, винт, вместо того, чтобы быстро тестировать его в IDLE, я просто попробую это на месте, в моем исходном коде для проекта».WTF - это сработало впервые, давая точное поведение, которое я хотел.Затем я попробовал его в другой IDE, в интерпретируемом окне, и снова, ЭТО РАБОТАЛО сразу же!

Так что, очевидно, моя проблема с IDLE в его режиме интерпретации.Кто-нибудь может объяснить, почему это не работает в оболочке IDLE ???

1 Ответ

5 голосов
/ 18 июля 2011
  1. Настройка раскладки клавиатуры в Windows индивидуальна для каждого процесса (и унаследована от родительского процесса)
  2. IDLE запускает ваш скрипт на Python в фоновом режиме отдельно от его графического интерфейса

Итак, вы успешно изменили раскладку клавиатуры фонового процесса Python, который выполняет ваш скрипт, но не GUI IDLE.

...