Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向Qlistview的项目添加图标_Python_Pyqt_Icons_Pyqt5_Qlistview - Fatal编程技术网

Python 向Qlistview的项目添加图标

Python 向Qlistview的项目添加图标,python,pyqt,icons,pyqt5,qlistview,Python,Pyqt,Icons,Pyqt5,Qlistview,直截了当地说,我想在Qlistview的项目中添加图标。我一直在尝试使用setData,但没有成功 代码: import os import sys from PyQt5 import QtCore, QtGui, QtWidgets class Widget(QtWidgets.QWidget): def __init__(self, parent=None): super(Widget, self).__init__(parent) iconroot

直截了当地说,我想在
Qlistview
的项目中添加图标。我一直在尝试使用
setData
,但没有成功

代码:

import os
import sys
from PyQt5 import QtCore, QtGui, QtWidgets

class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)
        iconroot = os.path.dirname(__file__)
        self.setFont(QtGui.QFont("Helvetica", 8, QtGui.QFont.Normal, italic=False)) 
        lay = QtWidgets.QVBoxLayout(self)

        self.listView = QtWidgets.QListView()
        lay.addWidget(self.listView)

        self.entry = QtGui.QStandardItemModel()
        self.listView.setModel(self.entry) 
        self.listView.setSpacing(5)

        for text in ("One", "two", "Three", "Four", 
                     "Five etc.."):
            it = QtGui.QStandardItem(text)
            self.entry.appendRow(it)
            it.setData(QtGui.QIcon(iconroot +'/images/flags'),QtCore.Qt.DecorationRole)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())
我希望有这样的事情

试试看:

import os
import sys
from PyQt5 import QtCore, QtGui, QtWidgets

class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)

#        iconroot = os.path.dirname(__file__)

        self.setFont(QtGui.QFont("Helvetica", 8, QtGui.QFont.Normal, italic=False)) 
        lay = QtWidgets.QVBoxLayout(self)

        self.listView = QtWidgets.QListView()
        lay.addWidget(self.listView)

        self.entry = QtGui.QStandardItemModel()
        self.listView.setModel(self.entry) 
        self.listView.setSpacing(5)

#        for text in ("One", "two", "Three", "Four", 
        for i, text in enumerate(["One", "two", "Three", "Four",                          # +++
                                  "Five etc.."]):
            it = QtGui.QStandardItem(text)
            self.entry.appendRow(it)

#            it.setData(QtGui.QIcon(iconroot +'/images/flags'), QtCore.Qt.DecorationRole)
            it.setData(QtGui.QIcon(os.path.join('images', 'bao{}.png'.format(i))),        # +++
                                   QtCore.Qt.DecorationRole)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

图标的路径是什么?我自己发现,这是通往图标的路径。你指出的是一个打字错误,因此你的问题必须关闭,你应该自己删除它,我将投票关闭你的问题,因为它指向的是非主题。我删除了我自己解决的帖子,这是通往图标的路径。