WXPYPHON LISTCTRL столбца игнорирует определенные поля

StackOverflow https://stackoverflow.com/questions/2914816

  •  04-10-2019
  •  | 
  •  

Вопрос

Я переписываю этот пост, чтобы уточнить некоторые вещи и предоставлять полное определение класса для виртуального списка, с которыми у меня проблемы с проблемой. Класс определяется так:

Из wx import listctrl, lc_report, lc_virtual, lc_hrules, lc_vrules,  evt_list_col_click, evt_list_cache_hint_clist_list_right_cache_hint_clist_list_small, меню, menuitem, newid, item_check, рамка DataSource = none, Style = lc_report | lc_virtual | lc_hrules | lc_vrules): listctrl .__ init __ (self, родитель, стиль = стиль) self.columns = [] self.il = ImageList (16, 16) self.bind (evt_list_cache_hint, self .CHECKCACHACHE) SELL.BIND (EVT_LIST_COL_CLICK, SELL.Orsource) Если данные DataSource не так: self.dataSource = DataSource Self.bind (evt_list_col_right_click, self.showavailablablecolumns) self.datatasource.list = self.populate () def setdataSource . GetItem (товар, самоуверенность [COL]) def ongetitemimage (self, item): возврата SE lf.dataSource.getimg (item) def onsort (self, событие): self.dataSource.sortbycolumn (self.columns [event.column]) self.refresh () def updateCount (Self): Self.SetIteMCount (Self.DataSource. Getcount ()) def Заполните (я): self.updateCount () self.dataSource.makeimglist (self.ill) self.setimageList (self.ill, image_list_small) self.showcolumns () def shopcolumns (self): for col ( текст, видимый) в перечислении (self.dataSource.getColumnheaders ()): если видно: self.columns.append (текст) self.insertColumn (Col, Text, width = -2) def filter (self, filter): self. DataSource.Filter (Фильтр) Self.updateCount () Self.refresh () def showavailablecolumns (self, evt): colmenu = menu () self.ID2ITEM = {} для IDX, (текст, видимый) в перечислении (Self.DataSource. Столбцы): id = newid () self.ID2ITEM [ID] = (IDX, видимый, текстовый) элемент = Menuitem (Colmenu, ID, текст, добрый = item_check) colmenu.appenditem (item) evt_menu (colmenu, id, self. Columntoggle) item.Check (видимый) кадр (Self, -1) .Popupmenu (Colmenu) colmenu.destroy () def columntoggle ( Я, EVT): переключение = Self.ID2TEM [EVT.GETID ()] Если включить [1]: IDX = Self.columns.index (переключение [2]) Self.DataSource.Colums [Переключение [0]] = (я .dataSource.Columns [Переключение [0]] [0], false) self.deleteColumn (IDX) Self.columns.pop (IDX) еще: Self.DataSource.Columns [Переключение [0]] = (Self.dataSource.Colums [Переключение [0]] [0], true) IDX = Self.dataSource.getColumnheaders (). Index ((переключается [2], правда)) Self.columns.insert (IDX, переключение [2]) Self.InsertColumn ( IDX, переключенный [2], ширина = -2) Self.dataSource.savecolumns ()

Я добавил функции, которые позволяют переключаться для столбцов, который облегчает мое описание проблемы, которое я сталкиваюсь. На 3-й экземпляре этого класса в моем приложении столбец на индекс 1 не будет отображать строковые значения. Целочисленные значения отображаются должным образом. Если я добавлю печатные заявления в мой метод OngeteTextext, значения отображаются в моей консоли правильно. Такое поведение не присутствует в первых двух экземплярах этого класса, и мой класс не содержит какого-либо типа проверки по отношению к отображению значения.

Он был предложен кем-то на группе пользователей WXPYPHON, что создаю автономный образец, который демонстрирует эту проблему, если смогу. Я работаю над этим, но еще не успел создать образец, который не полагается на доступ к базе данных. Любые предложения или советы будут наиболее ценными. Я разрываю волосы на этом.

Это было полезно?

Решение 2

Есть проблема с родным объектом в Windows. Если Getimg возвращает ни один из-за -1, в списке есть проблема с столбцом 1 по какой-то причине. Это от Robin Over на почту Google Group для этого вопроса.

Другие советы

Вы строите на демонстрационный код Wxpython для элементов управления виртуальным списком? Есть пара бухгалтерских вещей, которые вам нужно сделать, например, установить свойство ItemCount.

Один комментарий о вашем методе ongetitexext: поскольку нет другого оператора возврата, он не будет возвращать, если данные нет, поэтому ваш тест не имеет никакого эффекта.

Как насчет return data or "" вместо?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top