我正在按照本教程进行操作,但遇到了很多 QML 模块错误。我必须修改为QtQuick.Controls 1.1因为2.0, 2.1, 2.3行不通。现在这是我的 QML:
import QtQuick.Window 2.1
import QtQuick 2.0
import QtQuick.Controls 1.1
import QtQuick.Controls.Material 2.1
Run Code Online (Sandbox Code Playgroud)
现在我只得到
"QtQuick.Controls.Material" is not installed
Run Code Online (Sandbox Code Playgroud)
我正在使用 Ubuntu 17.10.1 和我的PyQt报告版本5.7。Qt 的网站上说:
Import Statement: import QtQuick.Controls.Material 2.3
Since: Qt 5.7
Run Code Online (Sandbox Code Playgroud)
但这行不通。既然我已经有了,Qt 5.7我应该能够像网站所说的那样使用材料设计。但我什至无法使用QtQuick.Controls 2.x。
我不想安装 Qt 5.8,因为那样我的应用程序将与旧版 Linux 不兼容。我需要使用5.7。
我应该如何进行这项工作?
更新:
在我的机器上尝试并忘记了我安装的内容后,我创建了一个 docker 容器来测试它:
FROM ubuntu:latest
ARG SIP_LINK=https://sourceforge.net/projects/pyqt/files/sip/sip-4.19.7/sip-4.19.7.tar.gz
ARG PYQT5_LINK=https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.10/PyQt5_gpl-5.10.tar.gz
RUN apt-get update \
&& apt-get install -y build-essential make wget ca-certificates \
python3 python3-dev \
qt5-default qml-module-qtquick-controls libqt5qml5 \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
#SIP INSTALLAITON
RUN wget --progress=bar:force -O sip.tar.gz $SIP_LINK \
&& mkdir sip \
&& tar -xzvf sip.tar.gz -C sip --strip-components=1 \
&& rm sip.tar.gz \
&& cd sip \
&& python3 configure.py && make && make install \
&& cd .. \
&& rm -rf sip
#PYQT5 INSTALLAITON
RUN wget --progress=bar:force -O pyqt5.tar.gz $PYQT5_LINK \
&& mkdir pyqt5 \
&& tar -xzvf pyqt5.tar.gz -C pyqt5 --strip-components=1 \
&& rm pyqt5.tar.gz \
&& cd pyqt5 \
&& python3 configure.py --confirm-license && make && make install \
&& cd .. \
&& rm -rf pyqt5
WORKDIR /home/project
ENTRYPOINT "/bin/bash"
Run Code Online (Sandbox Code Playgroud)
当我做
docker run --rm -it -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/lz/project:/home/project -e DISPLAY=unix$DISPLAY test
Run Code Online (Sandbox Code Playgroud)
并执行./main.py(我从这里跟踪 main.py ,我得到:
root@3054a751f04b:/home/prject# ./main.py
Traceback (most recent call last):
File "./main.py", line 4, in <module>
from PyQt5.QtQml import *
ImportError: No module named 'PyQt5.QtQml'
Run Code Online (Sandbox Code Playgroud)
添加这些软件包qml-module-qtquick-controls libqt5qml5只是为了尝试使其工作,但没有帮助
更新 2:
添加包后python3-pyqt5.qtquick,我现在只收到错误:
QQmlApplicationEngine failed to load component
file:///home/project/main.qml:4 module "QtQuick.Controls.Material" is not installed
process 12: D-Bus library appears to be incorrectly set up; failed to read machine uuid: UUID file '/etc/machine-id' should contain a hex string of length 32, not length 0, with no other text
See the manual page for dbus-uuidgen to correct this issue.
Run Code Online (Sandbox Code Playgroud)
但是,我不必添加 python3 qt 包,因为我正在构建它们