Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Update: Forum Guidelines & Code of Conduct

    'list' object is not callable

    General and Desktop
    2
    3
    5921
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      BreakBad last edited by

      Moving from PyQt to PySide, I'm noticing one of my views are spamming the error "TypeError: 'list' object is not callable". It seems the headers display normally, however the data method is not being executed and data is not displaying. Any insight appreciated.

      Qt 4.7.3
      PySide 1.1.0
      Python 2.7.3

      @from PySide import QtCore,QtGui

      class ScenarioOutputModel(QtCore.QAbstractItemModel):
      def init(self):
      super(ScenarioOutputModel,self).init()
      self.headers = []
      self.data = []

      def add_rows(self,rows):
          self.beginInsertRows(QtCore.QModelIndex(),self.rowCount(),(self.rowCount()+len(rows)-1))
          self.data.extend(rows)
          self.endInsertRows()
          
      def clear(self):
          self.data = []
          self.reset()
      
      def index(self,row,column,parent):
          """ Return index given a row, column, and parent index.
          param int row
          param int column
          param QModelIndex parent
          return int
          """
          return self.createIndex(row, column, QtCore.QModelIndex())
      
      def getNode(self,index):
          """ Return node of corresponding index.
          param QModelIndex index
          return Node
          """
          if index.isValid():
              node = index.internalPointer()
              if node is not None:
                  return node
          return self.data
      
      def parent(self,index):
          """ Return parent index of given index.
          param QModelIndex index
          return QModelIndex
          """
          return QtCore.QModelIndex()
      
      def flags(self,index):
          return QtCore.Qt.ItemIsEnabled|QtCore.Qt.ItemIsSelectable
      
      def set_headers(self,headers):
          self.headers = headers
          self.headerDataChanged.emit(QtCore.Qt.Horizontal,0,len(headers)-1)
      
      def headerData(self,section,orientation,role=QtCore.Qt.DisplayRole):
          
          if orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole:
              return self.headers[section]
          
          return None
      
      def rowCount(self,index=QtCore.QModelIndex()):
          return len(self.data)
      
      def columnCount(self,index=QtCore.QModelIndex()):
          return len(self.headers)
      
      def data(self,index,role=QtCore.Qt.DisplayRole):
          if not index.isValid():
              return None
          if role == QtCore.Qt.DisplayRole:
              print 'data'
              return self.data[index.row()][index.column()]
          return None
      

      if name == 'main':
      import sys
      app = QtGui.QApplication(sys.argv)

      table_view = QtGui.QTableView()
      model = ScenarioOutputModel()
      table_view.setModel(model)
      
      model.set_headers(['H%s'%s for s in range(10)])
      model.add_rows([[str(y) for y in range(10)] for x in range(10)])
      
      mw = QtGui.QMainWindow()
      mw.setCentralWidget(table_view)
      mw.show()
      
      sys.exit(app.exec_())
      

      @

      1 Reply Last reply Reply Quote 0
      • B
        BreakBad last edited by

        slap forehead

        Apparently naming a local variable the same as an method was tolerated somehow in pyqt. Renaming self.data to something else relieved the issue.

        1 Reply Last reply Reply Quote 2
        • A
          Anderson654 Banned last edited by

          This post is deleted!
          1 Reply Last reply Reply Quote 0
          • First post
            Last post