Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » TableList для каждой ячейки назначить свой виджет [RSS Feed]

#1 Дек. 20, 2010 20:21:18

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

TableList для каждой ячейки назначить свой виджет

Кто хорошо знает TableList?
Нужно, в колонке для каждой ячейки, назначить свой элемент ввода, например для ячейки (1,1) это поле, а для (2,1) поле со списком.
идея такова, но что-то не работает не пойму (Поле со списком не появляется), глаз замылился, а и ошибок нет

import Tkinter
import TableList
import bwidget

root = Tkinter.Tk()

tb = TableList.TableList(root, stretch='all', selecttype="cell", width=20, columns = (0, "Kod", 0 , "FIO"))
root.tk.call('tablelist::addBWidgetComboBox')
tb.pack()
tb.insertlist(0,(4,3))
tb.insertlist(1,(5,3))
tb.cellconfigure('0,0', editable="yes",editwindow="ComboBox")
root.mainloop()



Офлайн

#2 Дек. 21, 2010 20:51:16

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

TableList для каждой ячейки назначить свой виджет

Сам нашёл.
По скольку “ComboBox” дочка, bwidget, Нужно хоть разок, что то с bwidget сделать.
Я например вот так сделал:

test = bwidget.Label(root)
test.destroy()
создал тут же уничтожил
код полностью:

import Tkinter
import TableList
import bwidget



root = Tkinter.Tk()
test = bwidget.Label(root)
test.destroy()
tb = TableList.TableList(root, selecttype="cell", stretch='all', width=20)
root.tk.call('tablelist::addBWidgetComboBox')
tb.pack()
tb.insertcolumns("end",0,'kod')
tb.insertcolumns("end",0,'name')
for row in range(10):
tb.insert("end",'')
tb.rowconfigure('end',text = (row,row *row))

tb.cellconfigure('1,1', editable="yes",editwindow="ComboBox")
root.mainloop()



Офлайн

#3 Дек. 21, 2010 20:52:16

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

TableList для каждой ячейки назначить свой виджет

Теперь не знаю как ComboBox заполнить значениями. Кто знает????



Офлайн

#4 Дек. 21, 2010 21:41:44

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

TableList для каждой ячейки назначить свой виджет

Вот нашёл, но список все равно не заполняется (не раскрывается?)

import Tkinter 
import bwidget
#try:
# import tktablelist
#except:
import TableList as tktablelist
root = Tkinter.Tk()
TestFr = Tkinter.Frame(root)
TestBox = bwidget.ComboBox(root)
TestBox.configure( values = ("1","two","4rer"))

class TableBuilder:
def __init__(self, Frame, Titles):
self.Table=tktablelist.TableList(Frame,
editstartcommand=self.EditStartCmd,
selecttype="cell",
stretch = "all",
width=20,
)
#editstartcommand=self.EditStartCmd,
root.tk.call('tablelist::addBWidgetComboBox')
self.Table.pack()
self.BuildTable(Titles)

def BuildTable(self,Titles):
I = 0
for Title in Titles:
self.Table.insertcolumns("end", 0, Title)
self.Table.columnconfigure("end",editable='yes', editwindow="ComboBox")
I +=1
for row in range(10):
self.Table.insert("end","")
self.Table.rowconfigure("end", text=(row,row+1,row*row))

def EditStartCmd(self, table, row, col, text):
TEW = self.Table.editwinpath()
TEW.configure(values=(11,112,255,555))
return

Test = TableBuilder(TestFr,['A','B','C'])
TestBox = bwidget.ComboBox(root)
TestBox.configure( text=" This Works!", values = ("1","two","4rer"))
TestFr.pack()
TestBox.pack()
Tkinter.mainloop()



Офлайн

#5 Дек. 21, 2010 23:59:05

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

TableList для каждой ячейки назначить свой виджет

После трёхчасовых поисков нашел решение:
#Вот это место не работает

    def EditStartCmd(self, table, row, col, text): 
TEW = self.Table.editwinpath()
TEW.configure(values=(11,112,255,555))
return
Нужно вот так:
    def EditStartCmd(self, table, row, col, text): 
TEW = self.Table.editwinpath()
self.Table.setcombovalue(TEW,(11,112,255,555))

return
Как говорится спасибо самому себе….



Офлайн

  • Начало
  • » GUI
  • » TableList для каждой ячейки назначить свой виджет[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version