Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Tkinter: Таблица (grid) c возможностью редактирования [RSS Feed]

#1 Янв. 25, 2010 14:45:53

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: Таблица (grid) c возможностью редактирования

Всем доброго!
Подскажите пожалуйста tkinter-widget таблицу в которой можно было бы редактировать значение ячеек.



Python 2.7.3
Pyside 1.1.2

Офлайн

#2 Янв. 25, 2010 15:23:00

DHT
От:
Зарегистрирован: 2009-09-24
Сообщения: 119
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: Таблица (grid) c возможностью редактирования

В самом tkinter вроде нету, но можно tile вроде заюзать.
На 100% не уверен, просто видел когда сам искал… для себя использовал ttk.treeview, а для редактирования набросал отдельно небольшой интерфейс.



Офлайн

#3 Янв. 25, 2010 17:34:25

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: Таблица (grid) c возможностью редактирования

Хотя бы сторонний виджет, вроде как бы tktable подходил. Но не знаю на сколько он гибок. Т. е. данные исправить в нем можно, но можно ли их потом забрать оттуда?



Python 2.7.3
Pyside 1.1.2

Офлайн

#4 Ноя. 20, 2010 18:55:21

warpson
От:
Зарегистрирован: 2010-10-27
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: Таблица (grid) c возможностью редактирования

Cover Story
Но не знаю на сколько он гибок. Т. е. данные исправить в нем можно, но можно ли их потом забрать оттуда?
Это раз, затем непонятнен способ заполнения таблицы из python :

для MultiListbox есть insert прямо из python (а не из tcl), для tktable я не нашел моста.
Да и только наполнить tcl-таблицу для чтения полбеды - затем надо сразу после cell-редактирования
тут же сделать sql-update

Внимательно пролистав докцию, увидел сентенцию :
html
The table can use a Tcl array variable or Tcl command for data storage and retrieval
readme
multiple data sources ((Tcl array || Tcl command) &| internal caching)
Вот этот пресловутый 'Tcl command' хотелось бы поюзать из python.

А то получается, что ГУЙ работает сам по себе, однажды активированный питоном,
и никаких процентов (в виде отредактированных данных для DML-команд скажеи для pyodbc ) питону не возвращает…

Кто как заливает обратно данные из tktable в sql-базу ?

P.S.
man
Command-Line Name:-command
Database Name: command
Database Class: Command

Specified a command to use as a procedural interface to cell values. If -usecommand is true, this command will be used instead of any reference to the -variable array. When retrieving cell values, the return value of the command is used as the value for the cell. It uses the %-substition model described in COMMAND SUBSTITUTION below.
А в линуксовом /usr/lib/Tktable2.10/tktable.py кусок инициализации выглядит так:
variable=var,
usecommand=0,
command=test_cmd)

Т.е. возможность привязки метода вместо массива в Tcl есть.



Отредактировано (Ноя. 20, 2010 20:13:16)

Офлайн

#5 Ноя. 21, 2010 06:32:26

warpson
От:
Зарегистрирован: 2010-10-27
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: Таблица (grid) c возможностью редактирования

Вообще, все эти “command” нам безразличны - пусть массив берётся из variable.

Главное в том, чтобы существовала привязка к python-методу при обработке некоторых событий в tktable.
Т.е. “update/delete/insert” и т.п. (включая наполнение) должны вызывать обработку на питоне.

Вывод о tktable:
- либо он будет жить своим разумением через tclsql (послав куда подальше питона с его DB API),
- либо в связке с питоном он может показывать тока статические таблички типа “цены на дрова в Архангельске в 1918 г.”

Всё это склоняет в сторону выбора Qt с его заморочками для табличного редактора внешних sql-данных.

P.S. Посмотрел модель QSqlTable—QTableView и нашел её вполне продуманной.
Особо понравилось QSqRelationallTable - это подход профессионалов.
И нет никаких заморочек - это особенности SQL as is .

К чертям все эти детские tktable (и wxWidgets с их odbc c Gtk впридачу)
Только PyQt + QSql в рамках DB API 2.0 !



Отредактировано (Ноя. 22, 2010 12:51:03)

Офлайн

#6 Ноя. 22, 2010 13:55:11

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Tkinter: Таблица (grid) c возможностью редактирования

А когда QSql стал DB API 2 совместимым?



Офлайн

#7 Ноя. 23, 2010 13:03:05

Subideal Ox
От:
Зарегистрирован: 2010-11-23
Сообщения: 65
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: Таблица (grid) c возможностью редактирования

warpson
К чертям все эти детские tktable (и wxWidgets с их odbc c Gtk впридачу)
Что так? Мы не привыкли отступать:

 
#!/usr/bin/python
# -*- encoding: UTF-8 -*-

from Tkinter import *

class Cell(Entry):
def __init__(self, parent):
self.value = StringVar()
Entry.__init__(self, parent, textvariable = self.value)

class Table(Frame):
def __init__(self, parent, columns = 4, rows = 10):
Frame.__init__(self, parent)
self.cells = [[Cell(self) for i in range(columns)] for j in range(rows)]
[self.cells[i][j].grid(row = i, column = j) for i in range(rows) for j in range(columns)]

if __name__ == '__main__':
root = Tk()
tab = Table(root)
tab.pack()
tab.cells[1][1].value.set('test')
tab.cells[2][2].value.set( tab.cells[1][1].value.get() )

root.mainloop()



Офлайн

#8 Сен. 11, 2015 20:19:48

vito-Z80
Зарегистрирован: 2015-09-10
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: Таблица (grid) c возможностью редактирования

Subideal Ox
Подскажите как сохранить введенные данные в переменных для дальнейшего загона их в БД ?
А лучше по нажатию Enter после введения одного значения в любой области таблицы ?

Офлайн

#9 Сен. 11, 2015 20:46:36

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Tkinter: Таблица (grid) c возможностью редактирования

vito-Z80

Тут же по tkinter вопрос. Это другой вообще GUI.

Сохраняется в tkinter просто. На событие Return вешается функция callback в которой узнается положение курсора в таблице - получаются данные и сохраняются данные в БД…

Офлайн

#10 Сен. 11, 2015 22:39:23

vito-Z80
Зарегистрирован: 2015-09-10
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: Таблица (grid) c возможностью редактирования

4kpt_III
Тут же по tkinter вопрос. Это другой вообще GUI.

Сохраняется в tkinter просто. На событие Return вешается функция callback в которой узнается положение курсора в таблице - получаются данные и сохраняются данные в БД…

Я понял что другая библиотека, мне без разницы, лишь бы работало как у меня на скрине, то есть в таблице должны быть:
1) не активные элементы
2) активные ссылки ( не кнопки) - события
3) область ввода данных (эти данные и должны быть отняты от не активного элемента и загнаны в БД при нажатии Enter)

Отредактировано vito-Z80 (Сен. 11, 2015 22:50:34)

Офлайн

  • Начало
  • » GUI
  • » Tkinter: Таблица (grid) c возможностью редактирования[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version