Найти - Пользователи
Полная версия: wxPython:Grid не получается изменить тип ячейки
Начало » GUI » wxPython:Grid не получается изменить тип ячейки
1 2
vak
Подскажите как изменить тип ячейки, например на список? Пробовал, но не получается. Что-то не правильно делаю, но что?

import	wx
import wx.grid as gridlib




### -- ---
class TableUl(gridlib.PyGridTableBase):

def __init__(self):
gridlib.PyGridTableBase.__init__(self)

# self.colLabels = ['ID','kfdfkdjgk','flkdlfdl','dlsdfldflk','ldsdflkdfl']


self.dataTypes = {
(1,1) : gridlib.GRID_VALUE_NUMBER,
(2,2) : gridlib.GRID_VALUE_STRING,
(3.3) : gridlib.GRID_VALUE_CHOICE + ':1,43434,jdhjsdfh, хохо',
(4,4) : gridlib.GRID_VALUE_BOOL
}
self.data = {
(1,1) : "efekfrjf",
(2,2) : "kfdjfkgjfkgj",
(3,3) : "fldkj",
(4,4) : "fdfdlkfl"
}




def GetNumberRows(self):
return 150

def GetNumberCols(self):
return 50

def IsEmptyCell(self,row,col):
return self.data.get((row,col)) is not None

def GetValue(self,row,col):
value = self.data.get((row,col))
if value is not None:
return value
else:
return ''

def SetValue(self,row,col,value):
self.data[(row,col)] = value


def AppendRows(self, numRows=1):
return (self.GetRowCount() + numRows)


def AppendCols(self, numCols=1):
return (self.GetColCount() + numCols)


# def GetColLabelValue(self,col):
# return self.colLabels[col]

# def GetRowLabelValue(self,row):
# return self.rowLabels[row]

def CanGetValueAs(self,row,col,typeName):
colType = self.dataTypes[row,col].split(':')[1]
if typeName == colType:
return True
else:
return False


def CanSetValueAs(self,row,col,typeName):
return self.CanGetValueAs(row,col,typeName)





class myUl(gridlib.Grid):
def __init__(self,parent):
gridlib.Grid.__init__(self, parent, -1)

table = TableUl()
self.SetTable(table, True)
hellslade
vak что-то все отступы у вас кривые…
В гугле то искали? тут все просто – у вас одного метода не хватает GetTypeName (self, row, col), который и должен возвращать значение из вашего dataTypes
Но работать всеравно не будет, есть еще ошибка. Думаю ее вы сами найдете без труда, когда добавите этот метод :)
regall
Посмотрите в wxDemo. Там точно этот пример есть.
vak
hellslade
vak что-то все отступы у вас кривые…
В гугле то искали? тут все просто – у вас одного метода не хватает GetTypeName (self, row, col), который и должен возвращать значение из вашего dataTypes
Но работать всеравно не будет, есть еще ошибка. Думаю ее вы сами найдете без труда, когда добавите этот метод :)
Ага! Вот оно что.
Спасибо, добавлю метод - посмотрим что будет.
vak
regall
Посмотрите в wxDemo. Там точно этот пример есть.
Смотрел. Вопросы ещё остались.
vak
hellslade
vak что-то все отступы у вас кривые…
В гугле то искали? тут все просто – у вас одного метода не хватает GetTypeName (self, row, col), который и должен возвращать значение из вашего dataTypes
Но работать всеравно не будет, есть еще ошибка. Думаю ее вы сами найдете без труда, когда добавите этот метод :)
Добавил GetTypeName.
Да, действительно нормально не работает - есть что то ещё - пока не нашел.
vak
Вроде почти получилось.
CHOICE нормально не отображается, вместо него просто текстовое поле.
Подскажите плиз, почему именно CHOICE не отображается?


class	TableUl(gridlib.PyGridTableBase):

def __init__(self):
gridlib.PyGridTableBase.__init__(self)

self.dataTypes = {
(1,1) : gridlib.GRID_VALUE_NUMBER,
(2,2) : gridlib.GRID_VALUE_STRING,
(3.3) : gridlib.GRID_VALUE_CHOICE + ':1,43434,jdhjsdfh, хохо',
(4,4) : gridlib.GRID_VALUE_BOOL
}
self.data = {
(1,1) : "11",
(2,2) : "kfdjfkgjfkgj",
(3,3) : "fldkj",
(4,4) : "fdfdlkfl"
}




def GetNumberRows(self):
return 150

def GetNumberCols(self):
return 50

def IsEmptyCell(self,row,col):
return self.data.get((row,col)) is not None

def GetValue(self,row,col):
value = self.data.get((row,col))
if value is not None:
return value
else:
return ''

def SetValue(self,row,col,value):
self.data[(row,col)] = value


def AppendRows(self, numRows=1):
return (self.GetRowCount() + numRows)


def AppendCols(self, numCols=1):
return (self.GetColCount() + numCols)



def GetTypeName(self,row,col):
return self.dataTypes[(row,col)]


def CanGetValueAs(self,row,col,typeName):
colType = self.dataTypes(row,col).split(':')[0]
if typeName == colType:
return True
else:
return False


def CanSetValueAs(self,row,col,typeName):
return self.CanGetValueAs(row,col,typeName)
hellslade
vak, как вы пишите свой код? Он неработает…не то чтобы
vak
CHOICE нормально не отображается
вообще не работает…Исправляйте ошибки, которые к CHOICE отношения не имеют, внимательно посмотрите на свой self.dataTypes и отобразится все нормально.
vak
hellslade
vak, как вы пишите свой код? Он неработает…не то чтобы
vak
CHOICE нормально не отображается
вообще не работает…Исправляйте ошибки, которые к CHOICE отношения не имеют, внимательно посмотрите на свой self.dataTypes и отобразится все нормально.
Так и смотрю self.dataTypes
Пока не получается понять что тут не так.
Electronic
Садисты! Не могли человеку сказать, что там 3.3 вместо 3,3?
Да и значение по (3,3) в чойс не входит как-то…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB