Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.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 如何在QTreeWidgetItem可编辑时编辑它_Python_Qt_Pyqt_Qtreewidget_Qtreewidgetitem - Fatal编程技术网

Python 如何在QTreeWidgetItem可编辑时编辑它

Python 如何在QTreeWidgetItem可编辑时编辑它,python,qt,pyqt,qtreewidget,qtreewidgetitem,Python,Qt,Pyqt,Qtreewidget,Qtreewidgetitem,当双击项目并且用户输入新的项目名称时,我希望将此文本值分配给项目。_name属性,该属性在单击时打印onClick。如何做到这一点 from PyQt4 import QtCore, QtGui app = QtGui.QApplication([]) class Tree(QtGui.QTreeWidget): def __init__(self, *args, **kwargs): super(Tree, self).__init__() for i

当双击项目并且用户输入新的项目名称时,我希望将此文本值分配给
项目。_name
属性,该属性在单击时打印
onClick
。如何做到这一点

from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])

class Tree(QtGui.QTreeWidget):
    def __init__(self, *args, **kwargs):
        super(Tree, self).__init__()
        for i, item_name in enumerate(['Item_1','Item_2','Item_3','Item_4','Item_5']):
            rootItem = QtGui.QTreeWidgetItem()
            rootItem.setFlags(rootItem.flags() | QtCore.Qt.ItemIsEditable)
            rootItem._name = 'Root %s'%i
            rootItem.setText(0, rootItem._name)      

            for number in range(3):
                childItem = QtGui.QTreeWidgetItem(rootItem)
                childItem.setFlags(rootItem.flags() | QtCore.Qt.ItemIsEditable)
                childItem._name = 'Child %s'%number
                childItem.setText(0, childItem._name)

            self.addTopLevelItem(rootItem)
        self.clicked.connect(self.onClick)
        self.show()
    def onClick(self, index):
        print self.currentItem()._name

tree=Tree()
app.exec_()

子类
QTreeWidgetItem
。定义
setData
方法将值分配给属性
\u name

from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])

class TreeWidgetItem(QtGui.QTreeWidgetItem):
    def __init__(self, parent=None):
        super(TreeWidgetItem, self).__init__(parent)  

    def setData(self, column, role, value): 
        super(TreeWidgetItem, self).setData(column, role, value)
        self._name = value.toString()

class Tree(QtGui.QTreeWidget):
    def __init__(self, *args, **kwargs):
        super(Tree, self).__init__()
        for i, item_name in enumerate(['Item_1','Item_2','Item_3','Item_4','Item_5']):
            rootItem = TreeWidgetItem(self)
            rootItem.setFlags(rootItem.flags() | QtCore.Qt.ItemIsEditable)
            rootItem._name = 'Root %s'%i
            rootItem.setText(0, rootItem._name)      

            for number in range(3):
                childItem = TreeWidgetItem(rootItem)
                childItem.setFlags(rootItem.flags() | QtCore.Qt.ItemIsEditable)
                childItem._name = 'Child %s'%number
                childItem.setText(0, childItem._name)

            self.addTopLevelItem(rootItem)

        self.clicked.connect(self.onClick)
        self.show()

    def onClick(self, index):
        print self.currentItem()._name

子类
QTreeWidgetItem
。定义
setData
方法将值分配给属性
\u name

from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])

class TreeWidgetItem(QtGui.QTreeWidgetItem):
    def __init__(self, parent=None):
        super(TreeWidgetItem, self).__init__(parent)  

    def setData(self, column, role, value): 
        super(TreeWidgetItem, self).setData(column, role, value)
        self._name = value.toString()

class Tree(QtGui.QTreeWidget):
    def __init__(self, *args, **kwargs):
        super(Tree, self).__init__()
        for i, item_name in enumerate(['Item_1','Item_2','Item_3','Item_4','Item_5']):
            rootItem = TreeWidgetItem(self)
            rootItem.setFlags(rootItem.flags() | QtCore.Qt.ItemIsEditable)
            rootItem._name = 'Root %s'%i
            rootItem.setText(0, rootItem._name)      

            for number in range(3):
                childItem = TreeWidgetItem(rootItem)
                childItem.setFlags(rootItem.flags() | QtCore.Qt.ItemIsEditable)
                childItem._name = 'Child %s'%number
                childItem.setText(0, childItem._name)

            self.addTopLevelItem(rootItem)

        self.clicked.connect(self.onClick)
        self.show()

    def onClick(self, index):
        print self.currentItem()._name