PyQt5-显示虚拟键盘

发布于 2021-01-29 17:30:56

我试图弄清楚如何在触摸屏上使用虚拟键盘,在Windows上使用python 3.8和PyQt5。

我看到Qt有自己的插件QtVirtualKeyboard。我几乎遵循了此链接中的操作,首先安装了带有虚拟键盘支持的Qt 5.15,然后设置了环境变量。

一个简单的代码示例是这样的:

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”,…),但没有任何效果。

我知道我在那里缺少什么,但无法弄清楚是什么。感谢您的帮助 !

关注者
0
被浏览
152
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    首先,成为与Qt VirtualKeyboard关联的二进制文件,并且不安装我使用的Qt
    aqtinstall(在本示例中,已安装Qt
    5.15,但建议使用与编译pyqt5:相同的版本python -c "from PyQt5.QtCore import QT_VERSION_STR; print('Qt version', QT_VERSION_STR)"):

    python -m pip install aqtinstall
    python -m aqt install 5.15.0 windows desktop win64_msvc2019_64 -m qtvirtualkeyboard --outputdir qt
    

    然后它位于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_PREFIX_PATH / bin”文件夹中。
    • 创建文件夹“ QT_PREFIX_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_PREFIX_PATH / qml / QtQuick”文件夹。

    对于linux来说,它是类似的:

    python -m aqt install 5.15.0 linux desktop -m qtvirtualkeyboard --outputdir qt
    

    然后

    • 将“ qt / 5.15.0 / gcc_64 / bin / libQt5VirtualKeyboard.so.5”文件复制到“ QT_PREFIX_PATH / lib”文件夹中。
    • 创建文件夹“ QT_PREFIX_PATH / plugins / platforminputcontexts”。
    • 将“ qt / 5.15.0 / gcc_64 / plugins / platforminputcontexts / libqtvirtualkeyboardplugin.so”文件复制到“ QT_PREFIX_PATH / plugins / platforminputcontexts”文件夹中。
    • 将“ qt / 5.15.0 / gcc_64 / plugins / virtualkeyboard”文件夹复制到“ QT_PREFIX_PATH / plugins”文件夹。
    • 将“ qt / 5.15.0 / gcc_64 / qml / QtQuick / VirtualKeyboard”文件夹复制到“ QT_PREFIX_PATH / qml / QtQuick”文件夹。


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看