Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 27, 2016 15:02:24

dondublon
Зарегистрирован: 2016-09-27
Сообщения: 8
Репутация: +  -2  -
Профиль   Отправить e-mail  

QML ApplicationWindow

Всем трям.

Решил попробовать связку QML+Python, PyQt 5.
Элементарный пример, чаще всех встречающийся в Сети, в котором в качестве корневого элемента используется Rectangle, идёт на ура. Text, как корневой элемент - тоже.

Но вот когда я ставлю в корень ApplicationWindow или кого-то из его предков - окно остаётся белым, ничего не показывает. Status у QQuickView становится Ready, как при успешной загрузке. В чём секрет, что не так с ApplicationWindow?
Проверил через просмотрщик qmlscene - отображает нормально. А Питон не хочет.

На всякий случай - код.

 import QtQuick 2.3
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
 
ApplicationWindow {
    id: window
    visible: true
}

 # -*- coding: utf-8 -*-
import sys
# noinspection PyUnresolvedReferences
from PyQt5.QtCore import QUrl
# noinspection PyUnresolvedReferences
from PyQt5.QtWidgets import QApplication, QMainWindow, QHBoxLayout, QPushButton
# noinspection PyUnresolvedReferences
from PyQt5.QtQuick import QQuickView
 
 
class MyApp(QApplication):
    def __init__(self):
        super(MyApp, self).__init__(sys.argv)
        self.appLabel = QQuickView()
        self.appLabel.statusChanged.connect(self.on_status_changed)
 
    def on_status_changed(self,status):
        if status == QQuickView.Error:
            for err in self.appLabel.errors():
                print (err.toString())
        elif status == QQuickView.Ready:
            print('Status ready')
        else:
            print (status)
 
    def setSource(self, filename):
        self.appLabel.setSource(QUrl(filename))
 
    def show(self):
        self.appLabel.show()
 
 
# Main Function
if __name__ == '__main__':
    # Create main app
    myApp = MyApp()  # QApplication(sys.argv)
    # Create a label and set its properties
    myApp.setSource('mywindow.qml')
 
    # Show the Label
    myApp.show()
 
    # Execute the Application and Exit
    myApp.exec_()
    sys.exit()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version