QtPython Qtreewidget Проблема - PullRequest
0 голосов
/ 17 ноября 2009

Я пытаюсь сделать 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)
#//==========================//#

Все остальные объекты, которые мне нужно было реализовать на Qt с помощью Designer, и немного кода до сих пор работали нормально, например, inputLine, comboBox, TabWidget. Я только что застрял с этой ошибкой TreeWidget.

Любые намеки или предложения высоко ценятся и приветствуются.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2009

Я предполагаю, что код, который вы разместили, - это то, что вы получили, когда запускали файл UI через pyuic4. Я обнаружил, что компилятор пользовательского интерфейса PyQt иногда глючит. Все, что вы можете сделать, это исправить вывод вручную и пожаловаться продавцу.

В вашем случае строка

self.centralwidget.setSortingEnabled(__sortingEnabled) 

следует читать

self.colorTreeWidget.setSortingEnabled(__sortingEnabled) 

Я не понимаю, откуда взялся AttributeError: 'NoneType' object has no attribute 'setText'. Вы не ссылаетесь на self.treeWidget.topLevelItem(0) в приведенном ниже коде.

Поскольку пользовательский интерфейс покажется не слишком сложным, возможно, стоит начать все заново с нуля в QT Designer. Старайтесь избегать вырезания и вставки элементов управления, чтобы не перепутать Designer / pyuic4. Удачи!

0 голосов
/ 17 ноября 2009

Вот решение:

  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

...