#python #keyboard #python-idle
#python #клавиатура #python-простаивает
Вопрос:
Отказ от ответственности: Я новичок.
Я установил Python 3.2 (r32: 88452) и ActiveTcl 8.5.9.2 (сборка 294317) на свою OSX 10.6. Оба установлены без каких-либо ошибок, и мне уже удалось запустить .PY через терминал. Он работает нормально.
Я запускаю IDLE, и он не показывает никаких ошибок. Но всякий раз, когда я нажимаю клавишу кавычек (‘), ничего не происходит. То же самое с нажатой клавишей [shift] («). Символы просто не регистрируются. То же самое происходит с клавишей ‘backtick’ / tilde, нажатой [shift] или иным образом.
Я использую международную раскладку клавиатуры в США.
Я попытался открыть средство просмотра клавиатуры. Обе клавиши, одинарная кавычка и ‘backtick’, оранжевого цвета. (Я никогда не замечал этого до сих пор.) В любом другом приложении всякий раз, когда на них нажимают, вводится соответствующий символ — но внутри Python IDLE ничего не происходит.
Есть идеи о том, что может происходить?
Дополнительная информация: интерпретатор Python в интерактивном режиме (запуск из терминала) отлично регистрирует обе клавиши. Кроме того, если я попытаюсь изменить раскладку клавиатуры на обычную «U.S.», даже IDLE регистрирует клавиши; но это больше похоже на обходной путь, и я хотел бы услышать ваше мнение.
Комментарии:
1. Происходит ли это в других приложениях Tk / TkInter?
2. Пожалуйста, потерпите меня: я изучаю Python и я не знаю точно, что такое Tk / Tkinter. Но я попробовал
from Tkinter import *
из IDLE, и вот что я получил:>>> from Tkinter import * Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named Tkinter
3. Блин. Это не связано с реальной проблемой. Кажется, что в Python 3.1 «Tkinter» называется «tkinter».
4. Это не устраняет вашу проблему с IDLE, но вы могли бы попробовать IPython: ipython.scipy.org/moin/FrontPage
Ответ №1:
IDLE использует Tkinter
стандартную библиотеку Python для обеспечения функциональности графического интерфейса. Tkinter — это интерфейс к многоплатформенному Tk
графическому интерфейсу, часть Tcl/Tk
. К сожалению, Aqua Tk
в OS X в настоящее время не поддерживает все стандартные функции обработки текста в OS X.
Эта конкретная проблема, по-видимому, является разновидностью известной ошибки в Cocoa Aqua Tk. На обычной клавиатуре Apple в США вы используете option U
<vowel>
для формирования диарезы (например, ä
). Похоже, что на международной клавиатуре США '
клавиша используется вместо отсутствующей option u
. В самых последних версиях ActiveState Tk 8.5 (включая ту, которую вы установили) есть исправление, которое предотвращает сбой Tk в этом случае. Вы можете увидеть, как это раньше «работало», запустив поставляемый Apple IDLE 2.6, входящий в состав Mac OS X 10.6 ( /usr/bin/idle2.6
). Попробуйте ввести '
(с международной настройкой клавиатуры) или option U
(с настройкой клавиатуры США) там! Исправленная версия просто игнорирует этот случай, вместо сбоя.
Лучше всего придерживаться метода ввода с клавиатуры US
или US Extended
.
Комментарии:
1. Я понимаю. Спасибо, что напомнили мне о методе раскладки клавиатуры в США для символов с ударением. Я попытаюсь записать это как ошибку. Спасибо всем, что помогли мне.
2. Смотрите обновленный ответ и sourceforge.net/tracker /…
Ответ №2:
Переход на «обычный американский» — это не обходной путь, а решение для вас, если только вы действительно не хотите по какой-либо причине придерживаться международного формата США. Вот некоторые рекомендации по международной раскладке в США.
Комментарии:
1. Клянусь, я не (по крайней мере, намеренно) троллирую, но я не думаю, что это должно быть поведение IDLE по умолчанию. Разве это не должно правильно определять мою раскладку клавиатуры и что означают нажатия клавиш на моей клавиатуре?
2. Да, так и должно быть. Как это ведет себя, скажем, в приложениях, таких как Notepad, когда вы пытаетесь сделать
"
или'
? Или, как спрашивает Игнасио, в другом приложении Tkinter. (Если вы используете Windows, вы можете найти некоторые приложения Tkinter в каталоге Python. Скрипты или инструменты)3. Обе клавиши ведут себя так, как ожидалось: первое нажатие клавиши регистрируется как «мертвая клавиша» — если затем я ввожу гласную, любое приложение выводит символ с ударением; если нет, оно выводит кавычку / отступ / и т.д. Я выбрал международную раскладку в США, потому что я пишу в основном на португальском (поскольку я живу в Бразилии), и было бы несколько неудобно, если бы и когда мне пришлось использовать символы с ударением внутри строк, например. Я попытаюсь найти / протестировать другое приложение Tkinter.
4. Я вижу ваше намерение использовать этот макет. Извините, что я подумал, что это было по ошибке. Пожалуйста, попробуйте другие приложения tkinter, и если вы обнаружите ту же проблему, это вполне может быть ошибкой либо в классах Tkinter, либо в IDLE, в зависимости от поведения, которое вы обнаружите в других.