Python PyQt5-显示虚拟键盘
我正试图弄清楚如何在Windows上使用Python3.8和PyQt5为触摸屏使用虚拟键盘 我看到Qt有自己的插件QtVirtualKeyboard。我基本上遵循了已经完成的工作,首先安装了支持虚拟键盘的Qt5.15,然后设置了环境变量 下面是一个简单的代码示例:Python PyQt5-显示虚拟键盘,python,pyqt,pyqt5,qtvirtualkeyboard,Python,Pyqt,Pyqt5,Qtvirtualkeyboard,我正试图弄清楚如何在Windows上使用Python3.8和PyQt5为触摸屏使用虚拟键盘 我看到Qt有自己的插件QtVirtualKeyboard。我基本上遵循了已经完成的工作,首先安装了支持虚拟键盘的Qt5.15,然后设置了环境变量 下面是一个简单的代码示例: import os import sys from PyQt5.QtWidgets import QApplication from PyQt5.QtWidgets import QLineEdit from PyQt5.QtWid
import os
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QVBoxLayout
from PyQt5.QtWidgets import QWidget
os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard"
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.line_edit = None
self.init_ui()
def init_ui(self):
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)
if __name__ == "__main__":
app = QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec_())
这样做的目的是在触摸行编辑时显示键盘。目前,窗口会正确显示,但不会弹出键盘。我试图在上面的链接中设置(“QT_DIR”、“QT_PLUGIN_PATH”…),但没有任何效果
我知道我遗漏了什么,但我不知道是什么。谢谢你的帮助 首先,使用与Qt VirtualKeyboard关联的二进制文件,不安装我使用过的Qt(在本例中,安装了Qt 5.15,但建议使用用于编译pyqt5的相同版本:
python-c“从pyqt5.QtCore导入Qt_version_STR;打印('Qt version',Qt_version_STR')
):
然后它位于PyQt5前缀路径所在的位置:
python -c "from PyQt5.QtCore import QLibraryInfo; print('QT_PREFIX_PATH:', QLibraryInfo.location(QLibraryInfo.PrefixPath))"
输出:
QT_PREFIX_PATH: C:/Users/eyllanesc/qt_env/lib/site-packages/PyQt5/Qt
然后,您必须将以下内容从安装Qt的文件夹(该文件夹称为Qt)复制到PyQt5的前缀路径(通过前面的命令获得):
- 将“qt/5.15.0/msvc2019_64/bin/Qt5VirtualKeyboard.dll”文件复制到“qt_前缀_路径/bin”文件夹中
- 创建文件夹“QT\u PREFIX\u PATH/plugins/platforminputcontexts”
- 将“qt/5.15.0/msvc2019_64/plugins/platforminputcontexts/qtvirtualkeyboardplugin.dll”文件复制到“qt_PREFIX_PATH/plugins/platforminputcontexts”文件夹
- 将“qt/5.15.0/msvc2019_64/plugins/virtualkeyboard”文件夹复制到“qt_PREFIX_PATH/plugins”文件夹
- 将“qt/5.15.0/msvc2019_64/qml/QtQuick/VirtualKeyboard”文件夹复制到“qt_前缀_路径/qml/QtQuick”文件夹
python -m aqt install 5.15.0 linux desktop -m qtvirtualkeyboard --outputdir qt
然后
- 将“qt/5.15.0/gcc_64/bin/libQt5VirtualKeyboard.so.5”文件复制到“qt_前缀_路径/lib”文件夹中
- 创建文件夹“QT\u PREFIX\u PATH/plugins/platforminputcontexts”
- 将“qt/5.15.0/gcc_64/plugins/platforminputcontexts/libqtwirtualkeyboardplugin.so”文件复制到“qt_前缀路径/plugins/platforminputcontexts”文件夹
- 将“qt/5.15.0/gcc_64/plugins/virtualkeyboard”文件夹复制到“qt_PREFIX_PATH/plugins”文件夹
- 将“qt/5.15.0/gcc_64/qml/QtQuick/VirtualKeyboard”文件夹复制到“qt_前缀_路径/qml/QtQuick”文件夹
pip install getkey
命令安装该模块。使用它,您可以更动态地处理按键。通过一点工作,您可以创建一系列按钮,单击这些按钮可触发一些键码,例如:
key = getkey()
btn = QPushButton("UP Arrow Button")
btn.clicked.connect(someFunc)
然后
def someFunc:
key = keys.UP
瞧!如果单击它,它的作用类似于向上箭头键。再加上一点创意,您只能在QLineEdit处于焦点时弹出键盘。
只是一些想法。。。
希望这有帮助 你编译过qtvirtualkeyboard吗?@eyllanesc我真的认为这是通过Qt可执行文件安装插件时自动完成的。我正在研究如何编译它(我忘了提到我是Qt新手)并让你知道它是如何运行的…@eyllanesc我通过Qt创建者编译了qtvirtualkeyboard(使用MingGW和MSVC进行了编译,没有任何错误),并运行了“make install”。我可以很容易地使用键盘与C++代码示例,但是,不是用PyQT5,没有显示上面的小脚本。非常感谢您的帮助,它工作!有充分文件证明的答案。谢谢,伙计,我也在努力解决这个问题。只是一个小小的修正,我遵循linux的步骤,我认为1。step有一个拼写错误。bin文件夹不包含。因此,这些文件位于lib文件夹中。因此,对于linux,您必须将bin路径更改为lib,libQt5VirtualKeyboard.So.5是一个符号链接,因此我们也需要复制它指向的文件(在我的例子中是libQt5VirtualKeyboard.So.5.14.0)。
def someFunc:
key = keys.UP