0

I tried installing pyotherside from the ubuntu repos (packages qml-module-io-thp-pyotherside and pyotherside) as well as from the git repo.

But in when importing it in Python3 I keep getting ImportError: No module named 'pyotherside'.

Any knows why? What is the path where I should find pyotherside installed?

OS: Ubuntu 16.04.2

Feodoran
  • 1,752
  • 1
  • 14
  • 31

1 Answers1

-1

PyOtherSide is a library that uses the python code from QML and not vice versa, in your project you must the qml file and the python file. To run the program you must execute the qml, for example:

{your directory}
├── imageprovider.py
└── imageprovider.qml

imageprovider.py

import pyotherside
import math

def render(image_id, requested_size):
    print('image_id: "{image_id}", size: {requested_size}'.format(**locals()))

    # width and height will be -1 if not set in QML
    if requested_size == (-1, -1):
        requested_size = (300, 300)

    width, height = requested_size

    # center for circle
    cx, cy = width/2, 10

    pixels = []
    for y in range(height):
        for x in range(width):
            pixels.extend(reversed([
                255, # alpha
                int(10 + 10 * ((x - y * 0.5) % 20)), # red
                20 + 10 * (y % 20), # green
                int(255 * abs(math.sin(0.3*math.sqrt((cx-x)**2 + (cy-y)**2)))) # blue
            ]))
    return bytearray(pixels), (width, height), pyotherside.format_argb32

pyotherside.set_image_provider(render)

imageprovider.qml

import QtQuick 2.0
import io.thp.pyotherside 1.5

Image {
    id: image
    width: 300
    height: 300

    Python {
        Component.onCompleted: {
            // Add the directory of this .qml file to the search path
            addImportPath(Qt.resolvedUrl('.'));

            importModule('imageprovider', function () {
                image.source = 'image://python/image-id-passed-from-qml';
            });
        }

        onError: console.log('Python error: ' + traceback)
    }
}

You open a terminal run:

qmlscene {your directory}/imageprovider.qml
eyllanesc
  • 235,170
  • 19
  • 170
  • 241
  • Thank you, also for the interesting example. But why is the import not working without QML? Probably `pyotherside` would not know where to return its results to, but I would at least expect that Python3 would find the library (and maybe raise a error message pointing to this issue)? – Feodoran Apr 30 '17 at 09:43