Python 如何在QTreewidget中设置打开/关闭图标

Python 如何在QTreewidget中设置打开/关闭图标,python,qt,pyqt,icons,qtreewidget,Python,Qt,Pyqt,Icons,Qtreewidget,如何管理QTreeWidget中打开和关闭的图标事件 我有以下代码: iconNameOpen="folder" iconNameClose="folder_orange_open" if ID>0:#file iconNameFile="file_important" icon=QIcon(':/manageinc/svg/reinhardticons/filesystems/{}.svg'.format(iconNameFile)) item.setIcon(

如何管理
QTreeWidget
中打开和关闭的图标事件

我有以下代码:

iconNameOpen="folder"
iconNameClose="folder_orange_open"

if ID>0:#file
    iconNameFile="file_important"
    icon=QIcon(':/manageinc/svg/reinhardticons/filesystems/{}.svg'.format(iconNameFile))
    item.setIcon(0,icon)
else:
    icon=QIcon(':/manageinc/svg/reinhardticons/filesystems/{}.svg'.format(iconNameOpen))
    item.setIcon(0,icon)
    #how manage when only this folder is opened or close?
如果我做一个样式表,我会同时查看文件和文件夹(ID>0或您可以使用和信号来更改图标。下面的演示脚本使用
QStyle
来创建图标,但您可以按自己喜欢的方式来做:

import sys
from PyQt5.QtWidgets import *

class Window(QTreeWidget):
    def __init__(self):
        super().__init__()
        style = QApplication.style()
        self.dir_open = style.standardIcon(QStyle.SP_DirOpenIcon)
        self.dir_closed = style.standardIcon(QStyle.SP_DirClosedIcon)
        self.file_all = style.standardIcon(QStyle.SP_FileIcon)
        for index in '1234':
            parent = QTreeWidgetItem(self, ['Dir' + index])
            parent.setIcon(0, self.dir_closed)
            for item in 'ABC':
                child = QTreeWidgetItem(parent, ['File' + index + item])
                child.setIcon(0, self.file_all)
        self.itemExpanded.connect(self.handleExpanded)
        self.itemCollapsed.connect(self.handleCollapsed)

    def handleExpanded(self, item):
        item.setIcon(0, self.dir_open)

    def handleCollapsed(self, item):
        item.setIcon(0, self.dir_closed)

if __name__ == "__main__":

    app = QApplication(sys.argv)
    window = Window()
    window.setGeometry(600, 50, 400, 300)
    window.show()
    sys.exit(app.exec_())