GUI (для ввода и вывода матриц)?

Вопрос: Python 3.3.2 Проблема Hello.My - нужно создать графический интерфейс для входных данных (матрицы или таблицы). И взять из этих данных формы. Например: 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]] Идеальное решение - это ограничения для входной формы (только float). Вопросы: что я могу использовать? Tkinter не имеет таблицы. WxPython не поддерживается Python 3. PyQt4? (Mb u имеет пример, как взять

Вопрос:

Python 3.3.2 Проблема Hello.My – нужно создать графический интерфейс для входных данных (матрицы или таблицы). И взять из этих данных формы. Например:

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]]

Идеальное решение – это ограничения для входной формы (только float).

Вопросы: что я могу использовать? Tkinter не имеет таблицы. WxPython не поддерживается Python 3. PyQt4? (Mb u имеет пример, как взять данные из таблицы в [[],[],[]]?)
У кого-нибудь есть идея?

Лучший ответ:

Используя tkinter, для этого вам не нужен специальный виджет таблицы – просто создайте сетку обычных виджетов. Если у вас так много, что вам нужна полоса прокрутки, это немного сложнее (и на этом сайте есть примеры того, как это сделать), но просто для создания сетки чего-то маленького это очень просто.

Вот пример, который также включает некоторую проверку ввода:

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()

Подробнее о проверке ввода можно найти здесь: Интерактивная проверка содержимого виджета входа в tkinter

Оцените статью
Добавить комментарий