Средство запуска Apple Python работает с привязками клавиш - PullRequest
1 голос
/ 21 марта 2011

Я написал утилиту Python, которая использует tkinter. Я запускаю его на Macintosh. Когда он выполняется, он запускается в поставляемой Apple программе запуска Python (/Library/Frameworks/Python.framework/Versions/3.2/Resources/Python.app).

Мой код устанавливает свои собственные меню, и я привязываюсь к обычным эквивалентам клавиш Macintosh для моего меню редактирования (Command-x, command-c, command-x, command-a, command-z) и для выхода (команда -q). Моя проблема заключается в том, что программа запуска Python отвечает на привязки командных клавиш. Это неудобно для таких вещей, как вставка, потому что это делается дважды. Это настоящая проблема с выходом, потому что программа запуска убивает мою программу, прежде чем я могу сохранить измененные файлы.

Есть ли какой-нибудь способ, которым я могу остановить программу запуска Python, действующую на эквивалентные ключи команд? Я попытался это: "rootWindow.unbind ('<Command-Key-q>')", но безрезультатно. Программа запуска закрывается до того, как мой код сможет очиститься.

Я использую CPython 3.2 на OS X 10.6.6.

Ответы [ 3 ]

2 голосов
/ 21 марта 2011

Вместо переопределения привязок клавиш Tkinter по умолчанию, рассмотрим переопределение команды Tcl "exit" для пользовательской функции. (Это вызывается каждый раз, когда вы нажимаете command-q или используете пункт меню «quit».)

def save_and_exit():
    save_changed_files()
    sys.exit()

self.createcommand('exit', save_and_exit)

Кроме того, я бы порекомендовал удалить пользовательские привязки клавиш для копирования / вставки и позволить библиотеке сделать всю работу за вас. Если вы по-прежнему одержимы переопределением значений по умолчанию, у Effbot есть хороший учебник по событиям и привязкам Tkinter .

0 голосов
/ 22 марта 2011

Во-первых, /Library/Frameworks/Python.framework/Versions/3.2/Resources/Python.app не поставляется Apple.Скорее всего, вы установили Python 3.2 с помощью одного из python.org установщиков здесь или от какого-либо стороннего дистрибьютора, или, возможно, вы создали версию фреймворка из исходного кода.В любом случае Python.app - это фиктивный пакет приложений, включенный в каждую версию фреймворка.Его цель состоит в том, чтобы при запуске python, даже из командной строки, он воспринимался OS X как полноценное приложение с графическим интерфейсом.Это особенно важно при использовании tkinter.Меню по умолчанию и комбинации клавиш, которые вы видите, поставляются с Tcl/Tk, а не tkinter.Как вы обнаружили, правильный способ изменить их - это переназначить меню по умолчанию.Помните, что в настоящее время в Mac OS X доступно как минимум три основных варианта Tk: Aqua Carbon Tk, Aqua Cocoa Tk и X11 Tk.Есть важные детали, особенно в отношении Mac OS X 10.6, о Python и Tcl / Tk в Mac OS X на веб-сайте python.org .

0 голосов
/ 21 марта 2011

Есть ли конкретная причина, по которой вы используете Python.app для запуска? Этот .app, скорее всего, является причиной неправильного поведения ярлыков.

Если я правильно понял, этот модуль запуска - это просто оболочка для Python по умолчанию (/ usr / bin / python) со специальным импортом.

Если вы запускаете из терминала (здесь ключ -v):

/Library/Frameworks/Python.framework/Versions/5.1.1/Resources/Python.app/Contents/MacOS/Python -v

Вы увидите, что он импортирует в начале. Добавление этих строк в ваш основной файл должно сделать запуск командной строки таким же, как и с .app.

Обратите внимание, что python.app находится в версии 5.1.1.

ш

Юха

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...