2009-08-30 4 views
2

私はPyKDE4/PyQt4アプリケーション、Autokeyに取り組んでいます。私は、プログラムとCTRL + Cを送信すると、アプリケーションと対話するまでキーボード割り込みが処理されないことに気付きました。メニュー項目をクリックするか、チェックボックスを変更します。 KDE PythonアプリケーションでKeyboardInterruptを処理するには?

[email protected]:~$ /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に/自動キーを持つ:

KeyboardInterruptがキャッチされていないのはなぜ
#!/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) 

  • 私はむしろときよりも、それを発行した場合私は次に、GUIの中でアクションを取る
  • 最初のtry/except節では?

Python 2.6でUbuntu 9.04を実行しています。 a.main()を呼び出す前に

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

+0

sigがasapに捕まえられた場合、KeyboardInterruptが呼び出されていない理由が表示されます.Qt内でCベースのイベントループに入っていて、Pythonインタプリタが^ Cイベントループの回りに次回まで。 –

+0

私は自分の答えを更新しました。 –

答えて

4

はこれをやってみてください。

更新: GUIアプリケーションでのコピーにはCtrl-Cを使用できます。 QtでCtrl + \を使用すると、イベントループが終了してアプリケーションが終了する可能性があります。

+0

はい、sigがキャッチされます。 a.main()の内容を貼り付けてもらいたいですか? – lfaraone

+0

他のほとんどすべてのUNIXアプリケーションでCTRL + Cが機能するように変更する方法はありますか? – lfaraone

+0

メモと同様に:ドイツのキーボードでは、すでにキーシーケンス(Alt Gr +ß)があるので、Ctrl + \を押すことはできません。 – panzi

関連する問題