Jeremias Serafim
Jeremias Serafim

Reputation: 267

Does PyQt5/pyqt4 already supports QtVirtualKeyboard with Handwriting Recognition?

I'm working on a desktop application using pyqt5, and I want to use a Virtual Keyboard with Handwriting Recognition. I saw that Qt, QtVirtualKeyboard already support it.

Here's a link!

enter image description here

I got the C++ Qt example code running on QtCreator. But using python3.5 and PyQt5 it gives this message:

module "QtQuick.VirtualKeyboard" is not installed 
 import QtQuick.VirtualKeyboard 2.1 

How should I go on from here? Does PyQt5 comes with VirtualKeyboard module? if no How to install it on PyQt5?

Upvotes: 2

Views: 6308

Answers (2)

Ali Fırat Arı
Ali Fırat Arı

Reputation: 81

for qt desinger you can add only this line on your .py file.

os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard"

but If you want use QML with qtvirtualkeyboard;

There is no virtualkeyboard plugin in pyqt5.8, you must be use qt's paths.

For a example, basic steps for pyqt5, qt5.8 and qtvirtualkeyboard installiation on ubuntu:

1.step install qt5.8 with qtvirtualkeyboard

wget http://download.qt.io/official_releases/qt/5.8/5.8.0/qt-opensource-linux-x64-5.8.0.run

chmod +x qt-opensource-linux-x64-5.8.0.run

./qt-opensource-linux-x64-5.8.0.run

2.step

apt-get install python3 python3-pip pip3 install pyqt5

3.step

set environmental variables your qt paths on your python code.

import sys, os
os.environ["QT_DIR"] = "/opt/Qt5.8.0/5.8/gcc_64"
os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = "/opt/Qt5.8.0/5.8/gcc_64/plugins/platforms"
os.environ["QT_PLUGIN_PATH"] = "/opt/Qt5.8.0/5.8/gcc_64/plugins"
os.environ["QML_IMPORT_PATH"] = "/opt/Qt5.8.0/5.8/gcc_64/qml"
os.environ["QML2_IMPORT_PATH"] = "/opt/Qt5.8.0/5.8/gcc_64/qml"
os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard"

#print(os.environ) 

from PyQt5.QtCore import *
from PyQt5 import QtCore
from PyQt5.QtWidgets import *
from PyQt5.QtQuick import *


class keyboardapp(object):
    def __init__(self):
        self.view = QQuickView()
        self.view.setObjectName("View")
        #self.view.setFlags(Qt.FramelessWindowHint)
        self.view.setSource(QUrl("main.qml"))
        self.view.setResizeMode(QQuickView.SizeRootObjectToView)
        #self.Screen = self.view.rootObject()
        #print("Screen(Root) = " + str(self.Screen))
        self.view.show()

app = QApplication(sys.argv)
test = keyboardapp()
sys.exit(app.exec_())

Upvotes: 5

Irfan Bilaloğlu
Irfan Bilaloğlu

Reputation: 41

I been stuck with this too, and i am new to Qt After some researching, and digging in source code, found the solution

You dont need to import it to use it since its a module it will implement itself to every qt input

Well you dont need to install it on PyQt5 but on Qt5 if it is not already come with your Qt package, if you use archlinux you can install it with pacman

pacman -S qt5-virtualkeyboard

If you cannot find it in you os repositories try to build it here is documantation https://doc.qt.io/qt-5/qtvirtualkeyboard-index.html

Then to use it in your pyqt application, set environmental variable QT_IM_MODULE to "qtvirtualkeyboard" either from your bash or inside the top your script like

import os
os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard"

Upvotes: 3

Related Questions