2016-11-01 69 views
1

我正在使用pyqt5處理桌面應用程序,並且我想使用具有手寫識別功能的虛擬鍵盤。我看到Qt,QtVirtualKeyboard已經支持它。PyQt5/pyqt4是否已經支持手寫識別QtVirtualKeyboard?

Here's a link

enter image description here

我上QtCreator運行C++ Qt的示例代碼。 但使用python3.5和PyQt5它提供了這樣的信息:

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

我應該如何從這裏下去? PyQt5是否帶有VirtualKeyboard模塊?如果沒有如何在PyQt5上安裝它?

回答

2

我一直堅持這樣過了,我是新來的Qt 一些經過研究,並在源代碼中挖掘,找到了解決辦法

你不需要導入它使用它,因爲它是一個模塊,它會實現自己所有的Qt輸入

那麼你不需要在PyQt5但QT5安裝它,如果它是不是已經跟你的Qt包,如果你使用的archlinux,你可以吃豆子

pacman -S qt5-virtualkeyboard 

安裝如果你找不到它我n您OS庫試圖在這裏建立它是documantation https://doc.qt.io/qt-5/qtvirtualkeyboard-index.html

然後在你的PyQt的應用程序中使用它,設置環境變量QT_IM_MODULE爲「qtvirtualkeyboard」無論是從您的bash或頂部內側腳本像

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

對於qt desinger,您只能在.py文件中添加此行。

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

如果你想使用QML與qtvirtualkeyboard;

pyqt5.8中沒有虛擬鍵盤插件,你必須使用qt的路徑。

對於例如,對於pyqt5,qt5.8和qtvirtualkeyboard installiation ubuntu上基本步驟:

1.step安裝qt5.8與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。步驟

易於得到安裝python3 python3-PIP PIP3上Python代碼安裝pyqt5

3.step

設置環境變量你的Qt路徑。

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_())