Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 7, 2012 23:16:04

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

wxlistcontrol

Сказал что не будет вопросов по wx, ан нет, всё-таки появилась проблема которую я никак не могу разрешить.
Есть класс wx.ListControl:

class ext_stat(): 
def __init__(self, panel, columns, rows):

self.list = wx.ListCtrl(panel, 0,
style=wx.LC_REPORT
| wx.BORDER_NONE
| wx.LC_EDIT_LABELS
| wx.LC_SORT_ASCENDING
| wx.LC_SINGLE_SEL, pos=(1,200)
)
self.columns = columns
for col, text in enumerate(columns):
self.list.InsertColumn(col, text)
for item in rows:
index = self.list.InsertStringItem(sys.maxint, item[0])
for col, text in enumerate(item[1:]):
self.list.SetStringItem(index, col+1, text)
self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
self.list.SetColumnWidth(2, wx.LIST_AUTOSIZE)
self.list.SetColumnWidth(3, wx.LIST_AUTOSIZE_USEHEADER)
self.list.SetSize((900,150))
Выполняю следующий код:

#Вызываю в другом классе его
self.ext_list = ext_stat(self.main.panel2, self.ext_cols, wx.EmptyString)
#Скрываю его
self.ext_list.list.Show(False)

#Это уже метод
self.ext_list.list.DeleteAllItems()
#Здесь я получаю список списков из полки. Там сплошные цифры.
ext_stat = self.stat.take_ext_stat(self.date)
print ext_stat
ext_stat[0].insert(0, u'Не несущие информации')
ext_stat[1].insert(0, u'Не соответствующие формату')
ext_stat[2].insert(0, u'Уровень шума')
ext_stat[3].insert(0, u'Унификация')
list1 = ext_stat[0]
list2 = ext_stat[1]
list3 = ext_stat[2]
print list3
list4 = ext_stat[3]
print list4
self.ext_list.list.Append(list1)
self.ext_list.list.Append(list2)
self.ext_list.list.Append(list3)
self.ext_list.list.Append(list4)
self.ext_list.list.Show(True)
Вся проблема заключается в том, что list3 и lis4 путаются местами, причем list4 остается пустым, без значений отображается в листконтроле, т.е. отображается Унификация, но никаких циферок нет.

То есть должен получить лист контрол следующего вида:
...
Уровень шума 1 2 3 4 5
Унификация 6 7 8 9 0
А получаю:
Унификация 
Уровень шума 6 7 8 9 0
Где ошибка понять не могу… =\


p.s.
# print ext_stat
[[u'0.0', u'0.07', u'2.98', u'3.22', u'12.33', u'13.14', u'90.2', u'26.29', u'0.0', u'10.93', u'90.19', u'19.63', u'8.11', u'55.67', u'57.03', u'0.0'], [u'0.0', u'46.97', u'3.3', u'3.53', u'89.22', u'89.21', u'90.66', u'58.89', u'71.42', u'10.96', u'90.73', u'0.0', u'12.13', u'83.51', u'0.0', u'0.0'], [u'0.0', u'23.13', u'0.0', u'0.0', u'25.15', u'26.48', u'0.0', u'1.05', u'0.39', u'0.02', u'9.24', u'0.0', u'1.26', u'22.28', u'0.03', u'0.0'], [u'100.0', u'100.0', u'99.21', u'99.22', u'99.63', u'99.64', u'99.86', u'99.24', u'99.27', u'99.45', u'99.8', u'92.18', u'99.96', u'99.89', u'99.9', u'100.0']]

# print ext_stat[2] уже с вставленным текстом в начале
[u'\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0448\u0443\u043c\u0430', u'0.0', u'23.13', u'0.0', u'0.0', u'25.15', u'26.48', u'0.0', u'1.05', u'0.39', u'0.02', u'9.24', u'0.0', u'1.26', u'22.28', u'0.03', u'0.0']

# print ext_stat[3] уже с вставленным текстом в начале
[u'\u0423\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f', u'100.0', u'100.0', u'99.21', u'99.22', u'99.63', u'99.64', u'99.86', u'99.24', u'99.27', u'99.45', u'99.8', u'92.18', u'99.96', u'99.89', u'99.9', u'100.0']



Офлайн

#2 Фев. 10, 2012 08:49:12

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

wxlistcontrol

Опытным путём было выяснено что в том списке, который я добавляю в лист контрол аппендом (self.list.Append(object)) первый элемент во ВСЕХ списках должен быть РАЗНЫМ! При одинаковом первом элементе лист контрол выглядит следующим образом:

1
1
1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17



Офлайн

#3 Фев. 11, 2012 16:54:09

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

wxlistcontrol

Вообщем решил я вопрос.

list0 = ('Привет', '1', '2', '3')
list2 = ('Уривет', '4', '5', '6')
list1 = ('Привет', '7', '8', '9')


self.listctrl.Append(list1)
self.listctrl.Append(list2)
self.listctrl.Append(list0)
будет так:
Привет 
Привет
Уривет 4 5 6
Сбиваются места списков, и не отображаются значения двух списков.

Вся проблема в том, что не просто 1ые элементы списков должны быть разные, но и первые буквы слов должны быть разными:
list0 = ('Кривет', '1', '2', '3')
list2 = ('Уривет', '4', '5', '6')
list1 = ('Привет', '7', '8', '9')


self.listctrl.Append(list1)
self.listctrl.Append(list2)
self.listctrl.Append(list0)
будет так:
Кривет 1 2 3
Уривет 4 5 6
Привет 7 8 9
Всё будет выведено правильно.
Остальные элементы могу быть одинаковыми, главное чтобы первые элементы были разные. Почему так? Есть у меня две версии, надо покопаться в самом listcontrol'e чтобы проверить. Смысла не вижу, но багрепорт можно отписать.

Неужели никто не сталкивался и не работал с wx.listctrl?



Отредактировано (Фев. 11, 2012 16:58:25)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version