Python IDLE не принимает кавычки

#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, в зависимости от поведения, которое вы обнаружите в других.