QtPython Qtreewidget问题

时间:2009-11-16 23:51:05

标签: python qt qt4 pyqt pyqt4

我尝试使用Qtreewidget参加客户设计建议。我在QtPython上编码。我第一次尝试使用Qt Designer,然后生成代码。但是当我尝试运行它时,会出现错误:

self.centralwidget.setSortingEnabled(__sortingEnabled)
AttributeError: setSortingEnabled

我google了,但没有找到任何解决此问题的方法,除了一些建议只是简单地删除导致编译错误的代码中的行。但它并没有真正帮助,因为如果你这样做,它会触发更多的错误,就像那样:

self.treeWidget.topLevelItem(0).child(1).setText(0, QtGui.QApplication.translate("MainWindow", "Item Name", None, QtGui.QApplication.UnicodeUTF8))
AttributeError: 'NoneType' object has no attribute 'setText'

这是我当前生成一个简单的QtreeWidget / View的代码:

#//==========================//#
def color_setupUi(self, MainWindow,phrase):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.eqpt_centralwdg(MainWindow)
self.eqpt_retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
#//==========================//#
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")

item = QtGui.QTreeWidgetItem(self.colorTreeWidget)
item = QtGui.QTreeWidgetItem(self.colorTreeWidget)

self.centralwidget.setSortingEnabled(__sortingEnabled)
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)
self.colorTreeWidget.topLevelItem(0).setText(0, QtGui.QApplication.translate("MainWindow", "Yellow", None, QtGui.QApplication.UnicodeUTF8)
self.colorTreeWidget.topLevelItem(1).setText(0, QtGui.QApplication.translate("MainWindow", "Blue", None, QtGui.QApplication.UnicodeUTF8)
self.colorTreeWidget.setSortingEnabled(__sortingEnabled)
#//==========================//#

我需要在Qt上使用Designer实现的所有其他对象和一些代码到目前为止工作正常,例如inputLine,comboBox,TabWidget。我刚刚遇到这个TreeWidget错误。

任何提示或建议都受到高度赞赏和欢迎。

2 个答案:

答案 0 :(得分:2)

我假设您发布的代码是您通过pyuic4运行UI文件时获得的代码。我发现PyQt UI编译器有时会出错。您所能做的就是手动修复输出并向供应商投诉。

在你的情况下,行

self.centralwidget.setSortingEnabled(__sortingEnabled) 

应该阅读

self.colorTreeWidget.setSortingEnabled(__sortingEnabled) 

我不明白AttributeError: 'NoneType' object has no attribute 'setText'的来源。您没有在下面的代码中引用self.treeWidget.topLevelItem(0)

由于UI看起来并不太复杂,因此在QT Designer中从头开始重新开始可能是值得的。尽量避免剪切和粘贴控件,以免混淆Designer / pyuic4。祝你好运!

答案 1 :(得分:0)

以下是解决方案:

  1. 仅删除/评论以下行: self.centralwidget.setSortingEnabled(__ sortingEnabled)
  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")
    
      item = QtGui.QTreeWidgetItem(self.colorTreeWidget)
      item = QtGui.QTreeWidgetItem(self.colorTreeWidget)         
    
      self.connect(self.colorTreeWidget, QtCore.SIGNAL('itemClicked(QTreeWidgetItem*, int)'), self.eqpt_activateInput)
    
      MainWindow.setCentralWidget(self.centralwidget)  
    

    和输出

    def eqpt_activateInput(self,item,col):
      print "Qtree ok! pressed"
      print item.text(col)      
    

    希望这也可以帮助别人。 ThreaderSlash“at”gmail“dot”com