Пример #1
0
 def widgetForQMLUsingQQuickWidget(self, qmlFilename, parentWindow):
   widget = QQuickWidget()
   qurl = resourceMgr.urlToQMLResource(resourceSubpath=qmlFilename)
   widget.setSource(qurl)
   widget.show()
   " Return widget both as widget and quickThing having rootObject() "
   return widget, widget
Пример #2
0
import sys

from PyQt5.QtCore import QUrl, QMetaObject, Q_ARG, QVariant, QTimer, \
    QDate
from PyQt5.QtQuickWidgets import QQuickWidget
from PyQt5.QtWidgets import QApplication

counter = 0


def onTimeout(obj):
    global counter
    value = {
        "lesson": str(counter),
        "subject": "PE",
        "day": QDate.longDayName(1 + counter % 7)
    }
    QMetaObject.invokeMethod(obj, "append", Q_ARG(QVariant, value))
    counter += 1


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QQuickWidget()
    w.setSource(QUrl('main.qml'))
    timer = QTimer()
    timer.timeout.connect(lambda: onTimeout(w.rootObject()))
    timer.start(1000)
    w.show()
    sys.exit(app.exec_())
Пример #3
0
class PageThumbnailer(QObject):
    def __init__(self, parent=None):
        super().__init__(parent)
        self._view = QQuickWidget()  # QQuickWidget
        self._size = QSize(450, 253) * gVar.app.devicePixelRatio()
        self._url = QUrl()
        self._title = ''
        self._loadTitle = False

        self._view.setAttribute(Qt.WA_DontShowOnScreen)
        self._view.setSource(QUrl('qrc:data/thumbnailer.qml'))
        self._view.rootContext().setContextProperty('thumbnailer', self)
        self._view.show()

    def setSize(self, size):
        if size.isValid():
            self._size = size

    def setUrl(self, url):
        if url.isValid():
            self._url = url

    def url(self):
        return self._url

    def loadTitle(self):
        '''
        @return: bool
        '''
        return self._loadTitle

    def setLoadTitle(self, load):
        '''
        @param: load bool
        '''
        self._loadTitle = load

    def title(self):
        title = self._title
        if not title:
            title = self._url.host()
        if not title:
            title = self._url.toString()
        return title

    def start(self):
        if self._view.rootObject() and WebView.isUrlValid(self._url):
            self._view.rootObject().setProperty('url', self._url)
        else:

            def func():
                self.thumbnailCreated.emit(QPixmap())

            QTimer.singleShot(500, func)

    # Q_SIGNALS:
    thumbnailCreated = pyqtSignal(QPixmap)

    # public Q_SLOTS:
    @pyqtSlot(result=str)
    def afterLoadScript(self):
        '''
        @return: QString
        '''
        return Scripts.setCss('::~webkit-scrollbar{display:none;}')

    @pyqtSlot(bool)
    def createThumbnail(self, status):
        '''
        @param: status bool
        '''
        if not status:
            self.thumbnailCreated.emit(QPixmap())
            return

        def func():
            self._title = self._view.rootObject().property('title').strip()
            img = self._view.grabFramebuffer().scaled(self._size,
                                                      Qt.IgnoreAspectRatio,
                                                      Qt.SmoothTransformation)
            pixmap = QPixmap.fromImage(img)
            self.thumbnailCreated.emit(pixmap)

        QTimer.singleShot(1000, func)
Пример #4
0
from PyQt5.QtCore import QStandardPaths, QDir, QUrl
from PyQt5.QtNetwork import QNetworkDiskCache, QNetworkAccessManager
from PyQt5.QtQml import QQmlNetworkAccessManagerFactory


class NetworkAccessManagerFactory(QQmlNetworkAccessManagerFactory):
    def __init__(self):
        QQmlNetworkAccessManagerFactory.__init__(self)

    def create(self, parent):
        nam = QNetworkAccessManager(parent)
        diskCache = QNetworkDiskCache(nam)
        cachePath = QStandardPaths.displayName(QStandardPaths.CacheLocation)
        print "cache path:", cachePath
        diskCache.setCacheDirectory(cachePath)
        diskCache.setMaximumCacheSize(100 * 1024 * 1024)  # 设置100M缓存
        nam.setCache(diskCache)
        return nam


if __name__ == "__main__":
    import sys
    from PyQt5.QtWidgets import QApplication
    from PyQt5.QtQuickWidgets import QQuickWidget
    app = QApplication(sys.argv)
    widget = QQuickWidget()
    factory = NetworkAccessManagerFactory()
    widget.engine().setNetworkAccessManagerFactory(factory)
    widget.setSource(QUrl("test.qml"))
    widget.show()
    sys.exit(app.exec_())
    elif qtMsgType == QtCore.QtCriticalMsg:
        logging.critical(msg)
    elif qtMsgType == QtCore.QtFatalMsg:
        logging.error(msg)
        logging.exception(msg)
    else:
        logging.error(msg)


class HelloWorld(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(HelloWorld, self).__init__()  #使用super()方法继承父类
        self.resize(250, 150)  #改变窗口部件的大小
        self.setWindowTitle('Hello Word!')  #设置窗口部件标题


class QmlWidget(QQuickWidget):
    def __init__(self):
        self.setSource(QUrl("test.qml"))


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    # qInstallMessageHandler(handler)
    # helloworld = HelloWorld()
    # helloworld.show()
    logger.init()
    view = QQuickWidget()
    view.setSource(QUrl.fromLocalFile("temp/test.qml"))
    view.show()
    sys.exit(app.exec_())
Пример #6
0
def quickWidgetFromFile(fp: str, parent=None):
    qWidget = QQuickWidget(parent)
    qWidget.setSource(QUrl.fromLocalFile(fp))
    qWidget.show()
    return qWidget