QtVirtualKeyboard仅在主窗口生效,附加窗口无法输入问题求助
解决方案建议
检查模态窗口输入控件的焦点策略
在SecondWindow的初始化方法中,给文本输入控件添加明确的焦点策略,确保它能正确捕获输入焦点:def __init__(self): super(SecondWindow, self).__init__() uic.loadUi('second-ui-file.ui', self) self.setWindowModality(Qt.ApplicationModal) # 替换为你UI中实际的输入框对象名 self.lineEdit.setFocusPolicy(QtCore.Qt.StrongFocus)临时禁用
handleVisibleChanged函数测试
注释掉启动代码中visibleChanged信号的连接,测试虚拟键盘在模态窗口是否能正常输入:# QtGui.QGuiApplication.inputMethod().visibleChanged.connect(handleVisibleChanged)如果恢复正常,说明该函数中的窗口遮罩逻辑干扰了虚拟键盘的事件传递。可以修改该函数,确保模态窗口弹出时不对虚拟键盘做遮罩处理,或者调整遮罩区域的计算逻辑。
手动关联输入方法到模态窗口控件
在SecondWindow中重写showEvent方法,手动将输入方法的焦点对象绑定到文本输入控件:def showEvent(self, event): super().showEvent(event) self.lineEdit.setFocus() QtGui.QGuiApplication.inputMethod().setFocusObject(self.lineEdit)确认环境变量加载时机
确保QT_IM_MODULE环境变量在创建QApplication实例前就完成设置,避免加载顺序问题:if __name__ == '__main__': os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard" # 先设置环境变量再初始化应用 app = QtWidgets.QApplication(sys.argv) # ... 后续代码
内容的提问来源于stack exchange,提问作者blue14
相关产品推荐
相关产品推荐

