我正在PyQt4
开发一个语言学习系统,并为该程序中的每种语言编写了一个嵌入式虚拟键盘。我现在只在Windows上测试该程序。
问题是当选择亚洲IME时(例如MS New Quick,Google拼音,搜狗,仓颉等),我无法摆脱它,当焦点在QTextEdit
时,它会继续覆盖所有按键。
我在继承QTextEdit时尝试了这个:
self.setAttribute(Qt.WA_InputMethodEnabled, False)
尝试在我的子类中覆盖inputMethodEvent
和inputMethodQuery
。
当然,keyPressEvent
被覆盖,否则我将无法实现虚拟键盘。
我也试过这个:
class customInputContext(QInputContext):
def __init__(self, parent = 0):
QInputContext.__init__(self, parent)
print('qinputcontext initialized')
def reset(self):
pass
def filterEvent(self, event):
if event.type()==QEvent.RequestSoftwareInputPanel:
print('input panel requested')
event.accept()
return QInputContext.filterEvent(self, event)
else:
return QInputContext.filterEvent(self, event)
class MyQApplication(QApplication):
def __init__(self, args):
QApplication.__init__(self, args)
self.setInputContext(customInputContext(parent = self))
self.setAutoSipEnabled(False)
当我尝试在QTextEdit
中输入内容时,我总是会看到IME面板。那么当我不需要时,如何为它禁用IME?