PyQt6中如何程序化设置QtVirtualKeyboard的OSK语言及属性?
PyQt6中QtVirtualKeyboard的属性设置问题
我在PyQt6环境下使用QtVirtualKeyboard时遇到若干问题,因StackOverflow要求一次仅提一个问题,故拆分提问。以下是通用环境配置:
我参考StackOverflow上的回答安装QtVirtualKeyboard,执行的具体命令如下:
python3 -m venv venv venv/bin/pip install -U pip wheel PyQt6 aqtinstall QT_PREFIX_PATH=$(venv/bin/python -c "from PyQt6.QtCore import QLibraryInfo; print(QLibraryInfo.path(QLibraryInfo.LibraryPath.PrefixPath), end=None)") QT_VERSION_STR=$(venv/bin/python -c "from PyQt6.QtCore import QT_VERSION_STR; print(QT_VERSION_STR, end=None)") QT_VERSION_STR=6.7.3 venv/bin/python -m aqt install-qt linux desktop $QT_VERSION_STR -m qtvirtualkeyboard --outputdir qt cp -p qt/$QT_VERSION_STR/gcc_64/lib/libQt6VirtualKeyboard.so.$QT_VERSION_STR $QT_PREFIX_PATH/lib/libQt6VirtualKeyboard.so.6 cp -p qt/$QT_VERSION_STR/gcc_64/lib/libQt6VirtualKeyboardSettings.so.$QT_VERSION_STR $QT_PREFIX_PATH/lib/libQt6VirtualKeyboardSettings.so.6 mkdir -p $QT_PREFIX_PATH/plugins/platforminputcontexts cp -p qt/$QT_VERSION_STR/gcc_64/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so $QT_PREFIX_PATH/plugins/platforminputcontexts #cp -pr qt/$QT_VERSION_STR/gcc_64/plugins/virtualkeyboard $QT_PREFIX_PATH/plugins cp -pr qt/$QT_VERSION_STR/gcc_64/qml/QtQuick/VirtualKeyboard $QT_PREFIX_PATH/qml/QtQuick mkdir -p $QT_PREFIX_PATH/qml/Qt/labs cp -pr qt/$QT_VERSION_STR/gcc_64/qml/Qt/labs/folderlistmodel $QT_PREFIX_PATH/qml/Qt/labs
注意:我不得不强制设置QT_VERSION_STR=6.7.3,因为使用Python脚本返回的6.7.1时出现运行时错误(提示找不到6.7.3相关文件),这是否说明我的配置存在问题?
测试程序如下:
from PyQt6.QtWidgets import QApplication, QWidget, QMainWindow, QLineEdit, QVBoxLayout import sys import os os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard" class MaiWindow(QMainWindow): def __init__(self): super().__init__() self.line_edit = QLineEdit() self.line_edit2 = QLineEdit() self.layout = QVBoxLayout() self.main_widget = QWidget() self.main_widget.setLayout(self.layout) self.layout.addWidget(self.line_edit) self.layout.addWidget(self.line_edit2) self.setCentralWidget(self.main_widget) app = QApplication(sys.argv) window = MaiWindow() window.show() app.exec()
通过venv/bin/python test.py启动程序,当焦点进入任一QLineEdit时,虚拟键盘可正常显示。
问题3
是否可以通过代码设置QtVirtualKeyboard的属性?
我的核心需求是:
- 设置OSK语言:系统LANG为en_US.UTF-8,系统键盘为it-IT,但需要OSK为el.GR
- 将OSK显示在窗口底部而非屏幕底部
内容的提问来源于stack exchange,提问作者ZioByte
相关产品推荐
相关产品推荐

