我试着做一个Qtreewidget来参加一个客户的设计建议。我在QtPython上对它进行编码。我使用Qt设计器做了第一次尝试,然后生成了代码。但是当我尝试运行它时,出现了一个错误:
self.centralwidget.setSortingEnabled(__sortingEnabled)
AttributeError: setSortingEnabled我用谷歌搜索了一下,但没有找到任何解决这个问题的方法,除了一些简单地删除代码中导致编译错误的代码行的建议。但这并没有真正的帮助,因为如果你这样做,它会触发更多的错误,就像这样:
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)
#//==========================//#到目前为止,我需要使用Designer和一些代码在Qt上实现的所有其他对象都工作得很好,例如inputLine、comboBox、TabWidget。我被这个TreeWidget错误卡住了。
任何提示或建议都会受到高度赞赏和欢迎。
发布于 2009-11-17 08:21:01
我假设您发布的代码就是您通过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设计器中重新从头开始可能是值得的。尽量避免剪切和粘贴控件,以免混淆设计器/ pyuic4。祝好运!
发布于 2009-11-17 10:53:24
以下是解决方案:
仅对以下行执行
然后编写代码:
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“在gmail . com上。
https://stackoverflow.com/questions/1745661
复制相似问题