object debugger

a object variable reporter ive been using for debugging.
it creates a realtime table of an objects variables.
requires pyqt.

# -*- coding: utf-8 -*-
"""
use for debugging my objects.
requires pyqt.
creates a realtime list of an objects variables for debugging purposes.
import and create an instance in the class you want to debug passing self to the
memberdebugger.
make sure to create the instance after all variables have been declared.
or failing that uncomment the 2 lines from update()
i.e
dbg=memberdebugger(self)

"""
import sys
import inspect
from PyQt4 import QtCore, QtGui
from direct.task import Task

class memberdebugger(QtGui.QApplication):
    def __init__(self,obj):
        self.obj=obj
        self.updateinterval=0.5
        taskMgr.doMethodLater(self.updateinterval,self.update,"object debugger")
        self.createwindow()
        
    def createwindow(self):
        data=self.getdata()
        self.model = QtGui.QStandardItemModel(len(data), 2)
        self.tableView = QtGui.QTableView()
        self.tableView.setModel(self.model)
        self.tableView.setWindowTitle(str(self.obj))
        self.tableView.show()
        
    def getdata(self):
        #get all members of object
         data=inspect.getmembers(self.obj)
         #remove the methods
         for bit in data[:]:
             if inspect.ismethod(bit[1]):
                 data.remove(bit)
         return data
         
    def update(self,task):
        data=self.getdata()
        #self.model = QtGui.QStandardItemModel(len(data), 2)
        #self.tableView.setModel(self.model)
        for row in range(len(data)):
            for column in range(2):
                index = self.model.index(row, column, QtCore.QModelIndex())
                self.model.setData(index,str(data[row-1][column]))                
        return task.again