如何为QTextEdit禁用亚洲IME?

时间:2014-01-30 12:45:45

标签: python qt keyboard pyqt ime

我正在PyQt4开发一个语言学习系统,并为该程序中的每种语言编写了一个嵌入式虚拟键盘。我现在只在Windows上测试该程序。 问题是当选择亚洲IME时(例如MS New Quick,Google拼音,搜狗,仓颉等),我无法摆脱它,当焦点在QTextEdit时,它会继续覆盖所有按键。

我在继承QTextEdit时尝试了这个:

self.setAttribute(Qt.WA_InputMethodEnabled, False)

尝试在我的子类中覆盖inputMethodEventinputMethodQuery。 当然,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?

0 个答案:

没有答案