2016-12-15 3 views
2

私はPyQtでテキストエディタを作成しています。私は完全に自分自身ですべてのキーボード入力を処理したいので、私はそうのように私のQTextEditクラスでイベントハンドラを再実装しました:PyQtアプリケーション内でOption/Altキーを完全に制御する方法はありますか?

class GorgTextEdit(QtGui.QTextEdit):             
# customized QTextEdit class with reimplemented event handles 

    gorg_key_press_signal = pyqtSignal(str, int, QtGui.QWidget) 
    gorg_key_release_signal = pyqtSignal(str, int, QtGui.QWidget) 

    def __init__(self): 

     super(GorgTextEdit, self).__init__() 

    def keyPressEvent(self, e): 
     self.gorg_key_press_signal.emit("p", e.key(), self) 

    def keyReleaseEvent(self, e): 
     self.gorg_key_release_signal.emit("r", e.key(), self) 

は基本的に私が直接GorgTextEditの全てのキーイベントからの信号を送信していますCommanderオブジェクトはキーシーケンスに基づいて関数を呼び出し、その一部はそのメソッドを直接呼び出すことによってGorgTextEditオブジェクトにプレーンテキストを挿入します。プレーンテキストを挿入し、Commanderオブジェクトによって呼び出されたシフトキーと削除キーを処理するためのコマンドを記述しました。宛先ウィジェット(元のキーシーケンスのソース)が引数として渡されました。

問題は、オプションキーを押したままテキスト文字を押すたびに、Commanderからのアクションを待つのではなく、すぐに秘密のユニコード文字を挿入することです。基本的に私のオプションキーをMetaにマッピングしたいのですが、私はM-xをEmacsスタイルのコマンド呼び出しとして実装したいと考えています。これは、オプションキーがOSXにコードをバイパスさせ、任意のテキストウィンドウに許可なくフォーカスを当てて文字を直接挿入する場合には機能しません。今すぐM-x(オプションx)には、近似文字であるが挿入されています。

これらのOSXテキスト挿入機能をPython内で上書きする方法はありますか?

答えて

1

event filter(ウィジェットまたはグローバル)のいずれかを使用します。

関連する問題