2016-06-09 5 views
0

Ich fing an, einige Tutorials für Python und QT (https://www.youtube.com/watch?v=Eq7__6y0jwo&index=3&list=PL19DCiIwVefyQxlDTWlXQ4lnZDPW6_r-q) zu beobachten, aber ich bekomme diesen Fehler "QPainter :: begin: Paint Gerät zurückgegebene Engine == 0, tippe: 0 "und ich kann nicht verstehen warum. Die Idee ist, dass ich ein Fenster haben möchte, das in 3dsMax, Modo und vielleicht als Standalone funktioniert (Sowohl 3dsMax als auch Modo kommen mit PySide).QPainter :: begin: Paint Gerät zurückgegebene Engine == 0, typ: 0

Irgendwelche Ideen? Hier

ist der Code:

from PySide import QtCore, QtGui 
import sys 

class PaletteListModel (QtCore.QAbstractListModel): 
    def __init__(self, colors=[], parent=None): 
     QtCore.QAbstractListModel.__init__(self, parent) 
     self._colors = colors 


if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 

    listView = QtGui.QListView() 
    listView.show() 

    red = QtGui.QColor(255, 0, 0) 
    green = QtGui.QColor(0, 255, 0) 
    blue = QtGui.QColor(0, 0, 255) 

    model = PaletteListModel([red, green, blue]) 

    listView.setModel(model) 

    sys.exit(app.exec_()) 

Danke,

Nick

Antwort

1

Das einzige, was ich mit dem Code falsch sehen, ist man von QAbstractListModel erben, ohne die abstrakte Methoden zu implementieren.

Aus der Dokumentation hier: http://doc.qt.io/qt-5/qabstractlistmodel.html#details

Wenn QAbstractListModel Subklassen, müssen Sie Implementierungen der rowCount liefern() und Daten() Funktionen. Gut benommene Modelle bieten auch eine headerData() Implementierung.

Haben Sie keinen Code? Erstellen Sie jemals ein QPainter-Objekt?

+0

Danke Aaron! Das war so dumm von mir. Das hat es behoben. Im Tutorial hatte er diese beiden Methoden in seinem ersten Run nicht implementiert, also dachte ich, es wäre in Ordnung, es auch zu testen, bevor es weiter geht. – Nick

+0

Kein Problem, wenn Ihr Problem gelöst ist, bitte akzeptieren Sie die Antwort :) –

+0

Gotcha! Erster Tag auf Stack-Überlauf auch ... Ich habe heute morgen versucht, zu stimmen, aber ich durfte nicht, weil ich nicht genug Reputationspunkte habe. noch einmal Danke :) – Nick