我尝试使用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错误。
任何提示或建议都受到高度赞赏和欢迎。
答案 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)
以下是解决方案:
然后代码:
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