Ulrich,
Try pqsheet--I think it is a stalled project but it may have what you need.
Brian
--- On Thu, 5/22/08, ulrichD <[EMAIL PROTECTED]> wrote:
From: ulrichD <[EMAIL PROTECTED]> Subject: [PyQt] beginner, array setdata, write back To: [email protected] Date: Thursday, May 22, 2008, 9:32 AM
I'm a novice to pyqt and search for something so basic, it's embarrassing. Unfortunately I still couldn't find any answer in the net (probably don't even know what to search for) (in addition i hope I know dontt post twice now, the first time I got an mail saying it was rejected)
I simply want a gui to show me the content of an numpy array. When I change a value in the gui, i want this
to be written back into the array.
I tried something like:
XXXXXXXXXXXXXXXXXXXXXXXXXX from __future__ import division import sys from math import * from PyQt4.QtCore import * from PyQt4 import QtCore from PyQt4.QtGui import *
class sheet(QDialog): #By inheriting QDialog we get a blank form, that is, a gray rectangle, and some convenient behaviors and methods def __init__(self, arr, parent=None): #A widget that has no parent becomes a top-level window QWidget.__init__(self) tablemodel = MyTableModel(arr, self) self.tabmod=tablemodel tableview = QTableView() tableview.setModel(tablemodel) layout = QVBoxLayout(self) layout.addWidget(tableview) self.setLayout(layout) class MyTableModel(QAbstractTableModel): def __init__(self, datain, parent=None):
QAbstractTableModel.__init__(self, parent) self.arraydata = datain def rowCount(self, parent): return len(self.arraydata) def columnCount(self, parent): return len(self.arraydata[0]) def data(self, index, role): if not index.isValid(): return QVariant() elif role != Qt.DisplayRole: return QVariant() return QVariant(self.arraydata[index.row()][index.column()]) def isEditable(self, index): """ Return true if the index is editable. """ return True def flags(self, index): #function is called to chaeck if itmes are changable etc, index is a PyQt4.QtCore.QModelIndex object if not index.isValid(): return QtCore.Qt.ItemIsEnabled ret_flags = QtCore.Qt.ItemIsSelectable | QtCore.QAbstractItemModel.flags(self,
index) if self.isEditable(index): #print index.row() #returns the selected elements row #print index.column() ret_flags = ret_flags | QtCore.Qt.ItemIsEditable return ret_flags
def setData(self, index, value, role): """ if a item is edited, this command is called value.toString() constains the new value cahnge here to have it evaluate stuff!""" self.arraydata[index.row(),index.column()]=value.toString() #<<<<<<<<<<< the problem (i think)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
if this file is called ugui.py, it hem run it from the shell with
import ugui arr=rand(3,3) form = ugui.sheet(arr) form.show()
I think I encounter two problems: I access the newly entered data incorrectely and there seems to be a variable type issue.
Maybe someone can help me out
here? -- View this message in context: http://www.nabble.com/beginner%2C-array-setdata%2C-write-back-tp17406877p17406877.html Sent from the PyQt mailing list archive at Nabble.com.
_______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt |