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