문제

나는 pykde4/pyqt4 응용 프로그램을 연구하고 있습니다. autokey, 그리고 프로그램을 CTRL+C로 보낼 때 응용 프로그램과 상호 작용할 때까지 키보드 인터럽트가 처리되지 않음을 알았습니다. 메뉴 항목을 클릭하거나 확인란을 변경합니다.

lfaraone@stone:~$ /usr/bin/autokey
^C^C^C
Traceback (most recent call last):
  File "/usr/lib/python2.6/dist-packages/autokey/ui/popupmenu.py", line 113, in on_triggered
    def on_triggered(self):
KeyboardInterrupt
^C^C^C
Traceback (most recent call last):
  File "/usr/lib/python2.6/dist-packages/autokey/ui/configwindow.py", line 423, in mousePressEvent
    def mousePressEvent(self, event):
KeyboardInterrupt

이것은/usr/bin/autokey에 다음과 같은 점에도 불구하고 다음과 같습니다.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from autokey.autokey import Application

a = Application()
try:
    a.main()
except KeyboardInterrupt:
    a.shutdown()
sys.exit(0)

KeyboardInterrupt가 잡히지 않는 이유는 다음과 같습니다.

  • 내가 발행 할 때, 다음에 GUI에서 조치를 취하는 것이 아니라
  • 초기 시도/제외 조항에 의해?

Python 2.6으로 Ubuntu 9.04 실행.

도움이 되었습니까?

해결책

이것을 시도하십시오 :

import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)

호출하기 전에 a.main().

업데이트: CTRL-C는 GUI 응용 프로그램에서 복사에 사용될 수 있습니다. QT에서 ctrl+를 사용하는 것이 좋습니다. 이로 인해 이벤트 루프가 종료되고 응용 프로그램이 닫히게됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top