PyQt5 - 显示虚拟键盘
PyQt5 - Show virtual keyboard
我正在尝试弄清楚如何在触摸屏上使用虚拟键盘,在 Windows 上使用 python 3.8 和 PyQt5。
我看到Qt有自己的插件QtVirtualKeyboard。我非常关注已经完成的工作 in this link,首先安装支持虚拟键盘的 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_())
想法是在触摸行编辑时显示键盘。目前,window 正确显示,但不会弹出键盘。我尝试按照上面的 link 设置 ("QT_DIR", "QT_PLUGIN_PATH",...),但没有任何效果。
我知道我在那里遗漏了一些东西,但无法弄清楚是什么。感谢您的帮助!
首先,是与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”文件夹。
我对 qvirtualkeyboard 不是很熟悉,但我可以告诉你最简单的手动操作方法。有一个名为 getkey 的模块,可以使用 pip install getkey
命令安装。有了它,您可以更动态地处理按键操作。通过一些工作,您可以创建一系列按钮,单击这些按钮会触发一些键码,例如:
key = getkey()
btn = QPushButton("UP Arrow Button")
btn.clicked.connect(someFunc)
然后...
def someFunc:
key = keys.UP
瞧!如果单击它,它就像一个向上箭头键。有了更多的创造力,您只能在 QLineEdit 处于焦点时制作键盘 pop-up 。
只是一些想法...
希望这对您有所帮助!
我正在尝试弄清楚如何在触摸屏上使用虚拟键盘,在 Windows 上使用 python 3.8 和 PyQt5。
我看到Qt有自己的插件QtVirtualKeyboard。我非常关注已经完成的工作 in this link,首先安装支持虚拟键盘的 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_())
想法是在触摸行编辑时显示键盘。目前,window 正确显示,但不会弹出键盘。我尝试按照上面的 link 设置 ("QT_DIR", "QT_PLUGIN_PATH",...),但没有任何效果。
我知道我在那里遗漏了一些东西,但无法弄清楚是什么。感谢您的帮助!
首先,是与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”文件夹。
我对 qvirtualkeyboard 不是很熟悉,但我可以告诉你最简单的手动操作方法。有一个名为 getkey 的模块,可以使用 pip install getkey
命令安装。有了它,您可以更动态地处理按键操作。通过一些工作,您可以创建一系列按钮,单击这些按钮会触发一些键码,例如:
key = getkey()
btn = QPushButton("UP Arrow Button")
btn.clicked.connect(someFunc)
然后...
def someFunc:
key = keys.UP
瞧!如果单击它,它就像一个向上箭头键。有了更多的创造力,您只能在 QLineEdit 处于焦点时制作键盘 pop-up 。 只是一些想法... 希望这对您有所帮助!