2011-03-21 5 views
1

tkinter를 사용하는 Python 유틸리티를 작성했습니다. 저는 매킨토시에서 실행하고 있습니다. 실행될 때, 그것은 애플 제공 파이썬 실행기 프로그램 (/Library/Frameworks/Python.framework/Versions/3.2/Resources/Python.app) 내에서 실행됩니다.Apple Python launcher가 명령 키 바인딩에 대해 작동합니다.

내 코드는 자체 메뉴를 설치하고 내 편집 메뉴 (Command-x, command-c, command-x, command-a, command-z)에 해당하는 일반적인 Macintosh 명령 키에 해당합니다. 명령 -q). 내 문제는 Python 실행 프로그램이 명령 키 바인딩에 응답한다는 것입니다. 붙여 넣기와 같은 작업은 두 번 수행되기 때문에 불편합니다. 변경된 파일을 저장하기 전에 런처 프로그램이 내 프로그램을 종료하기 때문에 종료하는 것이 실제 문제입니다.

Python 실행 프로그램이 명령 키와 동일한 기능을 수행하는 것을 막을 수있는 방법이 있습니까? 나는 이것을 시도했다 : "rootWindow.unbind ('<Command-Key-q>')", 그러나 아무 소용이 없습니다. 내 코드를 정리하기 전에 실행 프로그램이 종료됩니다.

OS X 10.6.6에서 CPython 3.2를 사용하고 있습니다.

답변

2

BR,

주하는 사용자 정의 함수에 re-mapping Tcl's "exit" command을 고려하십시오. (이 작업은 명령-Q를 누르거나 "종료"메뉴 항목을 사용할 때마다 호출된다.) 그 외에

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

self.createcommand('exit', save_and_exit) 

, 나는 것이 당신의 복사/붙여 넣기 사용자 정의 keybinds를 제거하고 라이브러리를시키는 것이 좋습니다 당신을 위해 일을 . 기본 설정을 재정의하는 것이 여전히 어려울 경우 Effbot은 Tkinter events and bindings에 대한 유용한 자습서를 제공합니다.

+0

감사합니다, 코디. 이것은 광고 된대로 작동합니다. 그런데 Tck/TkAqua FAQ는 이제 [link] (http://wiki.tcl.tk/12987)에 있습니다. – david193

+0

내가 그 점을 분명히하자. 좋아하는 토론에서 참조 된 Tck/TkAqua FAQ는 이제 [New Tcl/TkAqua FAQ] (http://wiki.tcl.tk/12987)에 있습니다. – david193

+0

굉장! 앱을 사용해보세요. 투표 해 주시거나 내 대답을 수락 하시겠습니까? 내가 찾은 다른 답변에 투표를하기에 충분한 평판을 얻으 려합니다. –

0

Python.app을 시작하는 데 특별한 이유가 있습니까? 이 .app은 오작동의 원인 일 가능성이 큽니다.

제대로 이해했다면,이 실행 프로그램은 특별한 가져 오기가있는 기본 파이썬 (/ 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에 있습니다. 대신은 Tkinter의 기본 키 바인딩을 오버라이드 (override)의

+0

안녕하세요.런처가 어떻게 관련되는지는 나에게는 약간의 수수께끼이지만, tkinter가있는 창을 열면 자동으로 실행됩니다. 가져온 모듈 목록을 보면 실행 프로그램/래퍼 프로그램이 어떻게 작동하는지 알 수 없습니다. 나는 그것에 대한 어떤 문서도 찾을 수 없다. 그러나 나는 그것이 내 명령 핵심 사건을 잡아 당기는 범인이라는 데 동의한다. 버전 5.1.1에 대해 잘 모르겠습니다. 3.1.1을 의미합니까? – david193

0

첫째로, 은 Apple에서 제공하지 않습니다. 대부분 python.org installers here 또는 타사 배포자 중 하나를 사용하여 Python 3.2를 설치했거나 소스에서 프레임 워크 버전을 만들었습니다. 어쨌든 Python.app은 각 프레임 워크 버전에 포함 된 더미 응용 프로그램 번들입니다. 그 목적은 명령 줄에서조차도 파이썬을 호출 할 때 OS X에서 본격적인 GUI 응용 프로그램으로 인식되도록하는 것입니다. tkinter을 사용할 때 특히 중요합니다. 표시되는 기본 메뉴 및 키 바인딩은 이 아니라 Tcl/Tk에 의해 제공됩니다. 당신이 발견 한 것처럼, 이것들을 바꿀 수있는 올바른 방법은 기본 메뉴를 다시 매핑하는 것입니다. Aqua Carbon Tk, Aqua Cocoa Tk 및 X11 Tk와 같이 현재 Mac OS X에서 사용할 수있는 주요 변종은 Tk입니다. 특히 Mac OS X 10.6과 관련하여 중요한 세부 정보가 있습니다 (Python and Tcl/Tk on Mac OS X at the python.org website).

+0

안녕하세요. 당신의 사려 깊은 대답에 감사드립니다. 나는 셸 프로그램이 사과에서 오지 않았다고 정정했다. – david193

관련 문제