У меня есть приложение pyqt5, которое использует qml2 как интерфейс. При переносе с машины разработчика (моей) на другую (mint qiana, debian sid) она запускается при импорте QtQuick.Dialogs 1.1
.Pyqt5 & QML2 развертывание на debian/mint (dev - ubuntu)
Ошибка может быть воспроизведена даже на свежих docker
контейнерах под управлением debian-sid
изображений.
Мой тест питон скрипт:
from PyQt5 import QtWidgets, QtWidgets, QtCore, uic
from PyQt5.QtCore import pyqtProperty, QCoreApplication, QObject, QUrl
from PyQt5.QtQml import qmlRegisterType, QQmlComponent, QQmlEngine
class CommonQMLWindow():
def __init__(self, qml_file_name):
self._engine = QQmlEngine()
component = QQmlComponent(self._engine)
# STUCK HERE (LINE BELOW - component.loadUrl)
component.loadUrl(QUrl(qml_file_name))
self.qml_window = component.create()
if self.qml_window is None:
for error in component.errors():
print(error.toString())
exit(1)
from ui import commonqmlwindow
Загрузка:
from PyQt5 import QtWidgets, QtWidgets, QtCore, uic
from PyQt5.QtCore import pyqtProperty, QCoreApplication, QObject, QUrl
from PyQt5.QtQml import qmlRegisterType, QQmlComponent, QQmlEngine
class MainWindow(commonqmlwindow.CommonQMLWindow):
def __init__(self, parent=None):
commonqmlwindow.CommonQMLWindow.__init__(self, 'ui/test.qml')
QML файл:
import QtQuick 2.0
import QtQuick.Dialogs 1.1
import QtGraphicalEffects 1.0
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.2
import "." as Controls
import "../uihelpers.js" as UIHelpers
TextField {
id: rootItem
property bool pickDirectory: false
property alias pickerTitle: picker.title
property alias pickerSelectMask: picker.nameFilters
property alias selectedUrl: picker.fileUrl
readOnly: true
FileDialog {
id: picker
selectFolder: rootItem.pickDirectory ? true : false
}
}
main.py:
app = QtWidgets.QApplication(sys.argv)
main_window = mainwindow.MainWindow()
app.exec()
Все пакеты установлены (для qml2, python3, pyqt5 и qt5) хорошо работает для чего угодно, кроме этого.
Такое поведение происходит на Linux Mint qiana
, Debian sid
. Когда я комментирую импорта Постулаты (//import QtQuick.Dialogs 1.1
) он работает, но мне нужно FileDialog ..
Версии:
Qt версия: 5.3.2
PyQt версия: 5.3.2
Python версии 3.4: .2
UPD: он работает даже на Mac OS X Yosemite, но не на debian.
Не могу понять второй абзац - можете ли вы прояснить его? – ekhumoro
О контейнерах 'docker'? –
Да, это тот. Также: вы получаете сообщения об ошибках? – ekhumoro