GUI (para matrices de entrada y salida)?

Necesito crear una GUI para ingresar datos en una matriz o tabla y leer los datos de este formulario.
La solución perfecta es restringir el formulario de entrada para permitir solo float .
Por ejemplo:

A=[[1.02,-0.25,-0.30,0.515],[-0.41,1.13,-0.15,1.555],[-0.25,-0.14,1.21,2.780]]

Preguntas:

  1. ¿Qué puedo usar?
    Tkinter no tiene tablas y wxPython no es compatible con Python 3.3.2

  2. ¿Qué hay de PyQt4?
    ¿Quizás pueda dar algún ejemplo sobre cómo tomar datos de la tabla en [[],[],[]] ?
    ¿Alguien tiene ideas?

Gracias

Usando tkinter, no necesita un widget de tabla especial para hacer esto, solo cree una cuadrícula de widgets de entrada normales. Si tiene tantos que necesita una barra de desplazamiento, es un poco más difícil (y hay ejemplos en este sitio sobre cómo hacerlo), pero solo para crear una cuadrícula de algo pequeño es muy sencillo.

Aquí hay un ejemplo que también incluye alguna validación de entrada:

 import tkinter as tk class SimpleTableInput(tk.Frame): def __init__(self, parent, rows, columns): tk.Frame.__init__(self, parent) self._entry = {} self.rows = rows self.columns = columns # register a command to use for validation vcmd = (self.register(self._validate), "%P") # create the table of widgets for row in range(self.rows): for column in range(self.columns): index = (row, column) e = tk.Entry(self, validate="key", validatecommand=vcmd) e.grid(row=row, column=column, stick="nsew") self._entry[index] = e # adjust column weights so they all expand equally for column in range(self.columns): self.grid_columnconfigure(column, weight=1) # designate a final, empty row to fill up any extra space self.grid_rowconfigure(rows, weight=1) def get(self): '''Return a list of lists, containing the data in the table''' result = [] for row in range(self.rows): current_row = [] for column in range(self.columns): index = (row, column) current_row.append(self._entry[index].get()) result.append(current_row) return result def _validate(self, P): '''Perform input validation. Allow only an empty value, or a value that can be converted to a float ''' if P.strip() == "": return True try: f = float(P) except ValueError: self.bell() return False return True class Example(tk.Frame): def __init__(self, parent): tk.Frame.__init__(self, parent) self.table = SimpleTableInput(self, 3, 4) self.submit = tk.Button(self, text="Submit", command=self.on_submit) self.table.pack(side="top", fill="both", expand=True) self.submit.pack(side="bottom") def on_submit(self): print(self.table.get()) root = tk.Tk() Example(root).pack(side="top", fill="both", expand=True) root.mainloop() 

Puede encontrar más información sobre la validación de entrada aquí: validación interactiva del contenido del widget de entrada en tkinter