0

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

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 错误。

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

4

2 回答 2

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/pyuic4。祝你好运!

于 2009-11-17T00:21:01.303 回答
0

这是解决方案:

  1. 仅删除/注释以下行:self.centralwidget.setSortingEnabled(__sortingEnabled)

然后代码:

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

于 2009-11-17T02:53:24.253 回答