Форум сайта python.su
0
Возможно ли избежать “зависания” окна при выполнении ресурсоёмких, или просто долгих операций.
Ну, например, по onclick происходит долгий процесс заполнения ну например листа, то есть операция секунд на 10-20.
При этом если подвигать окно, то элементы перестают обновляться, и программа перестаёт отвечать. Если же не двигать окно, то всё нормально, и все элементы могут изменяться динамично.Возможно ли каким нибудь способом отрисовывать форму, что бы не было зависаний.
Например если в List'e(со скролом) каждые несколько секунд обновляются записи можно было проскролить вниз и ничего не зависло?
Вроде объяснил )))
Офлайн
1
Сделать заполнение отдельным средом, или рефрешить все во время заполенния.
Офлайн
0
Всмысле отдельным средом??
И как отрефрешить всё?Доставать каждый объект?Если да, то как достать только нужные? )
Офлайн
1
Нет, просто попробуйте добавлять в лист отдельным потоком, а в конце обновить форму.
Но я думаю что можно просто обновлять форму во время заполнения листа, но, может моргать все.
вообще интересно, я попробую на досуге, точнее напишу.
Офлайн
0
Вопрос: ))) Как обновить форму, я немного запутался в объектах ))
Офлайн
1
Пример - додаем 10000 строчек в ListBox в отдельном потоке.
class AddListThread(threading.Thread): def __init__(self, lb1): self.lb1 = lb1 threading.Thread.__init__(self) def run(self): for i in range(100000): self.lb1.Insert(str(i), i, clientData=None) self.lb1.Update() class TestListBox(wx.Panel): def __init__(self, parent, log): self.log = log wx.Panel.__init__(self, parent, -1) wx.StaticText(self, -1, "This example add itemsto the wx.ListBox control in thread.", (20, 10)) self.lb1 = wx.ListBox(self, 60, (100, 50), (90, 120), ['',], wx.LB_SINGLE) self.b = wx.Button(self, 10, "Add 100000 items to ListBox", (300, 20)) self.Bind(wx.EVT_BUTTON, self.OnClick, self.b) def OnClick(self, event): AddListThread(self.lb1).start()
Отредактировано (Март 21, 2008 17:59:39)
Офлайн
0
Огромное спасибо за ответ, сегодня попробую!!
Офлайн
0
Попробывал, всё получилось!Сначала были проблемы с потерей фокуса(а вследствии невозможность управлять формой), но я насильно поставил перевод фокуса на листбокс и всё нормально стало.Спасибо!
Офлайн