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
直接發送信號到然後根據鍵序列調用函數,其中一些通過直接調用其方法將純文本插入到GorgTextEdit
對象中。我編寫了用於插入純文本和處理由Commander
對象調用的移位和刪除鍵的命令,其中目標小部件(原始鍵序列的來源)作爲參數傳遞到這些函數中。
問題是每當我按住選項鍵,然後打一個文本字符,它立即插入一個深奧的unicode字符,而不是等待來自我的指揮官的行動。我希望我的選項鍵基本上映射到Meta - 我希望將M-x用作Emacs樣式的命令調用。如果選項鍵導致OSX繞過我的代碼並將字符直接插入任何文本窗口未經許可的焦點,這不起作用。現在M-x
(選項x)插入≈
,近似字符,這是我沒有告訴它做的。
是否有一些方法可以從Python內覆蓋這些OSX文本插入功能?