2016-06-09 47 views
0

我开始看Python和QT的一些教程(https://www.youtube.com/watch?v=Eq7__6y0jwo&index=3&list=PL19DCiIwVefyQxlDTWlXQ4lnZDPW6_r-q),但我得到这个错误“QPainter :: begin:绘制设备返回的引擎== 0,输入:0“,我不知道为什么。这个想法是,我想有一个窗口可以在3dsMax,Modo中使用,也可以作为独立的(3dsMax和Modo都带有PySide)。QPainter :: begin:绘制设备返回的引擎== 0,类型:0

任何想法?

下面是代码:

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_()) 

感谢,

尼克

回答

1

我看到你的代码错误的唯一的事情是,你是从QAbstractListModel继承,但没有实施抽象方法。

从这里的文件:http://doc.qt.io/qt-5/qabstractlistmodel.html#details

当继承QAbstractListModel,你必须提供实现根据rowCount()和数据的 ()函数。表现良好的模型 提供了一个headerData()实现。

遗漏任何代码?你有没有创建一个QPainter对象?

+0

谢谢Aaron!那对我来说太愚蠢了。这解决了它。在教程中他没有在他的第一次运行中实现这两种方法,所以我认为在进一步测试之前也可以进行测试。 – Nick

+0

没问题,如果你的问题解决了,请接受答案:) –

+0

gotcha!第一天堆栈溢出太多..我试图在今天早上进行投票,但我没有被允许,因为我没有足够的声望点。再次感谢:) – Nick