Qt Python : QTreeWidget Child Problem

Threader Slash threaderslash at gmail.com
Tue Nov 17 21:47:32 EST 2009


> Hello Everybody,
>
> I have a QTreewidget that works fine if I have just one level on my
> treelist. If I decide to add child sublevels, it gives me an error. Here is
> the code, that works nice only without the "childs" lines on it (see after
>
> "child 1" and "child 2").
>
>     def eqpt_centralwdg(self,MainWindow):
>         self.centralwidget = QtGui.QWidget(MainWindow)
>         self.centralwidget.setObjectName("centralwidget")
>
>         self.colorTreeWidget = QtGui.QTreeWidget(self.centralwidget)
>         self.colorTreeWidget.setGeometry(QtCore.QRect(60, 60, 191, 141))
>         self.colorTreeWidget.setObjectName("colorTreeWidget")
>
>         # father root 1
>         item = QtGui.QTreeWidgetItem(self.colorTreeWidget)
>         #child 1 - from father 1
>         item = QtGui.QTreeWidgetItem(item)
>         #child 2 - from father 1
>         item = QtGui.QTreeWidgetItem(item)
>
>         # father root 2
>         item = QtGui.QTreeWidgetItem(self.colorTreeWidget)
>
>         self.connect(self.colorTreeWidget,
> QtCore.SIGNAL('itemClicked(QTreeWidgetItem*, int)'),
> self.eqpt_activateInput)
>
>         MainWindow.setCentralWidget(self.centralwidget)
>
>     def eqpt_retranslateUi(self, MainWindow):
>         MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow",
> "MainWindow", None, QtGui.QApplication.UnicodeUTF8)
>
>         self.colorTreeWidget.headerItem().setText(0,
> QtGui.QApplication.translate("MainWindow", "color", None,
> QtGui.QApplication.UnicodeUTF8)
>         __sortingEnabled = self.colorTreeWidget.isSortingEnabled()
>
>         self.colorTreeWidget.setSortingEnabled(False)
>         # father root 1
>         self.colorTreeWidget.topLevelItem(0).setText(0,
> QtGui.QApplication.translate("MainWindow", "Yellow", None,
>
> QtGui.QApplication.UnicodeUTF8)
>         #child 1 - from father 1
>         self.colorTreeWidget.topLevelItem(0).child(0).setText(0,
> QtGui.QApplication.translate("MainWindow", "Yellow Sun", None,
>
> QtGui.QApplication.UnicodeUTF8))
>         #child 2 - from father 1
>         self.colorTreeWidget.topLevelItem(0).child(1).setText(0,
> QtGui.QApplication.translate("MainWindow", "Yellow Gold", None,
>
> QtGui.QApplication.UnicodeUTF8))
>
>         # father root 2
>         self.colorTreeWidget.topLevelItem(1).setText(0,
> QtGui.QApplication.translate("MainWindow", "Blue", None,
> QtGui.QApplication.UnicodeUTF8)
>
>         self.colorTreeWidget.setSortingEnabled(__sortingEnabled)
>
>
> Here is the output, when it works
>
>     def eqpt_activateInput(self,item,col):
>         print "Qtree ok! pressed"
>         print item.text(col)
>
> if I exclude the lines related to the "child 1" and "child 2" from the code,
> it runs. Otherwise, it gives me the error:
>
>         AttributeError: 'NoneType' object has no attribute 'setText'
>
>
> I used the Qt Designer to generate the code, and added some lines to trigger
> events.
>
> Any hints or suggestions are highly appreciated.
>
>
Solved!
Here is the solution:

parent1 = QtGui.QTreeWidgetItem(self.colorTreeWidget)
child1_1 = QtGui.QTreeWidgetItem()
child1_2 = QtGui.QTreeWidgetItem()
parent1.addChild(child1_1)
parent1.addChild(child1_2)

Now it works properly.

Hope this may help others too.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20091118/7cb4b043/attachment-0001.html>


More information about the Python-list mailing list