QtQuickControls 2.0 与 PyQt5
QtQuickControls 2.0 with PyQt5
我设置了一个 virtualenv 并安装了 pyqt5 (PyQt5-5.7-cp35-cp35m-manylinux1_x86_64.whl):
virtualenv -p /usr/bin/python3.5 .
source bin/activate
pip install pyqt5
我创建了一个 basic.qml 文件:
import QtQuick 2.7
import QtQuick.Controls 2.0
Rectangle {
width: 300
height: 100
color: "red"
}
并尝试将其加载到我的 python 代码中:
import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQuick import QQuickView
if __name__ == '__main__':
myApp = QApplication(sys.argv)
view = QQuickView()
view.setSource(QUrl('basic.qml'))
view.show()
sys.exit(myApp.exec_())
它失败了
file:///[...]/main.qml:2:1: plugin cannot be loaded for module "QtQuick.Controls": Cannot load library /[virtualenv]/lib/python3.5/site-packages/PyQt5/Qt/qml/QtQuick/Controls.2/libqtquickcontrols2plugin.so: (libQt5QuickTemplates2.so.5: Can't open shared object file: File or directory not found)
import QtQuick.Controls 2.0
^
Process finished with exit code 0
我查过了。它抱怨的这个文件实际上不存在。但是我该如何安装呢? PyQt5 完全支持 QtQuickControls2 吗?
如果我将 basic.qml 中的导入从 import QtQuick.Controls 2.0
切换为 import QtQuick.Controls 1.2
,它会起作用。但是我想使用新控件。
这看起来像是 PyQt5 中的错误。该包裹缺少 libQt5QuickTemplates2.so
和 libQt5QuickControls2.so
。
希望 PyQt 5.7 包中包含的 Qt 5.7 版本和 qt.io 上可用的官方 Qt 5.7 版本是以完全二进制兼容的方式构建的,一种可能是从下载并安装 Qt 5.7 qt.io,并将缺少的库复制到您的 virtualenv 中。例如:
$ cp ~/Qt/5.7/gcc_64/lib/libQt5QuickTemplates2.* path/to/lib/python3.5/site-packages/PyQt5/Qt/lib
$ cp ~/Qt/5.7/gcc_64/lib/libQt5QuickControls2.* path/to/lib/python3.5/site-packages/PyQt5/Qt/lib
我设置了一个 virtualenv 并安装了 pyqt5 (PyQt5-5.7-cp35-cp35m-manylinux1_x86_64.whl):
virtualenv -p /usr/bin/python3.5 .
source bin/activate
pip install pyqt5
我创建了一个 basic.qml 文件:
import QtQuick 2.7
import QtQuick.Controls 2.0
Rectangle {
width: 300
height: 100
color: "red"
}
并尝试将其加载到我的 python 代码中:
import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQuick import QQuickView
if __name__ == '__main__':
myApp = QApplication(sys.argv)
view = QQuickView()
view.setSource(QUrl('basic.qml'))
view.show()
sys.exit(myApp.exec_())
它失败了
file:///[...]/main.qml:2:1: plugin cannot be loaded for module "QtQuick.Controls": Cannot load library /[virtualenv]/lib/python3.5/site-packages/PyQt5/Qt/qml/QtQuick/Controls.2/libqtquickcontrols2plugin.so: (libQt5QuickTemplates2.so.5: Can't open shared object file: File or directory not found)
import QtQuick.Controls 2.0
^
Process finished with exit code 0
我查过了。它抱怨的这个文件实际上不存在。但是我该如何安装呢? PyQt5 完全支持 QtQuickControls2 吗?
如果我将 basic.qml 中的导入从 import QtQuick.Controls 2.0
切换为 import QtQuick.Controls 1.2
,它会起作用。但是我想使用新控件。
这看起来像是 PyQt5 中的错误。该包裹缺少 libQt5QuickTemplates2.so
和 libQt5QuickControls2.so
。
希望 PyQt 5.7 包中包含的 Qt 5.7 版本和 qt.io 上可用的官方 Qt 5.7 版本是以完全二进制兼容的方式构建的,一种可能是从下载并安装 Qt 5.7 qt.io,并将缺少的库复制到您的 virtualenv 中。例如:
$ cp ~/Qt/5.7/gcc_64/lib/libQt5QuickTemplates2.* path/to/lib/python3.5/site-packages/PyQt5/Qt/lib
$ cp ~/Qt/5.7/gcc_64/lib/libQt5QuickControls2.* path/to/lib/python3.5/site-packages/PyQt5/Qt/lib