Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
pyside小部件中用于循环收集项的python_Python_Arrays_Treeview_Pyside - Fatal编程技术网

pyside小部件中用于循环收集项的python

pyside小部件中用于循环收集项的python,python,arrays,treeview,pyside,Python,Arrays,Treeview,Pyside,是否可以使用PySide将QTreeView的每个项目添加到逗号分隔的列表中,例如: ['Workspaces/', 'Workspaces/0010', 'Video/'] 以下是我编写的生成文件夹目录的代码: import sys import os from PySide import QtGui from PySide.QtCore import * from PySide.QtGui import * class WorkSpaceUtility(QtGui.QWidget):

是否可以使用
PySide
QTreeView
的每个项目添加到逗号分隔的列表中,例如:

['Workspaces/', 'Workspaces/0010', 'Video/']
以下是我编写的生成文件夹目录的代码:

import sys
import os
from PySide import QtGui
from PySide.QtCore import *
from PySide.QtGui import *

class WorkSpaceUtility(QtGui.QWidget):

    def __init__(self):
        super(WorkSpaceUtility, self).__init__()

        self.initUI()

    def initUI(self):

        # Treelist View
        self.tvFolders = QtGui.QTreeWidget(self)
        self.tvFolders.setHeaderLabel('Folders')
        self.tvFolders.setSortingEnabled(True)
        self.tvFolders.resize(300,300)
        self.tvFolders.move(0,0)

        # Add TEMP folders for testing
        self.addItem('Audio', self.tvFolders.invisibleRootItem())
        item = self.addItem('Workspaces', self.tvFolders.invisibleRootItem())
        self.addItem('0010', item)
        vid = self.addItem('Video', self.tvFolders.invisibleRootItem())
        self.addItem('0020', vid)
        self.addItem('0010', vid)
        shot = self.addItem('0050', vid)
        self.addItem('0050_10', shot)
        asset = self.addItem('0050_20', shot)
        self.addItem('donuts', asset)
        self.addItem('0050_30', shot)
        self.addItem('0040', vid)

        # Print Treeview
        bnPrintInfo = QtGui.QPushButton('Print Info', self)
        bnPrintInfo.resize(280,40)
        bnPrintInfo.move(10, 310)       
        bnPrintInfo.clicked.connect(self.PrintInfo)

        self.resize(300, 360)
        self.center()

        self.setWindowTitle('Workspace Utility')  
        self.show()

    def PrintInfo(self):
        count = self.tvFolders.topLevelItemCount()

        for x in xrange(count):
            name = self.tvFolders.invisibleRootItem().child(x).text(0)
            childcnt = self.tvFolders.invisibleRootItem().child(x).childCount()

            print name,childcnt
        # print var

    def center(self):

        qr = self.frameGeometry()
        cp = QtGui.QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def addItem(self, name, parent):
        self.tvFolders.expandItem(parent) 
        item = QTreeWidgetItem(parent)
        item.setText(0, name)
        #It is important to set the Flag Qt.ItemIsEditable
        item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled | Qt.ItemIsEditable)

        item.setIcon(0,self.style().standardIcon(QStyle.SP_DirIcon))
        return item

def main():

    app = QtGui.QApplication(sys.argv)
    ex = WorkSpaceUtility()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()
以下是我希望获取并添加到逗号分隔列表中的目录:

试试这个

def PrintInfo(self):
    startNode = self.tvFolders.invisibleRootItem()
    lists = self.generateList(startNode)

    print lists

def generateList(self, node, children=[], path=""):
    path = os.path.join(path, node.text(0))

    for i in xrange(node.childCount()):
        files = self.generateList(node.child(i), children, path)
    children.append(path)

    return children
如果我做错了什么,或者不清楚,请随时告诉我

编辑:啊,刚刚意识到你想从树视图中删除元素-递归函数应该是类似的,但是。。。对此很抱歉:/Ok,在快速安装pyside并阅读文档之后,我已经用一个应该可以工作的版本更新了它