В настоящее время я пытаюсь перенести приложение wxPython 2.8 на новый wxPython 4.
Одна проблема, с которой я сталкиваюсь, заключается в следующем:
У нас есть один фрейм с дюжиной панелей внутри ноутбука, у некоторых панелей есть ноутбуки, настройка всех этих панелей занимает довольно много времени. Поскольку большинство пользователей будут использовать только подмножество панелей, мы инициализируем все панели как пустые панели, а затем, когда пользователь нажимает на вкладку, ему приходится немного подождать, пока все элементы будут размещены на панели.
С wx2.8 это не было проблемой, когда пользователь нажимал на одну из этих вкладок, все приложение перестало отвечать. Когда панель была инициализирована и макет был закончен, панель была показана пользователю.
Однако с новым wx4 новая панель сразу становится видимой, и пользователь может «наблюдать» за созданием панели и видеть, как макет перемещается назад и вперед.
Итак, мой вопрос:
Есть ли способ эффективно остановить обновление / отрисовку WX-приложения, пока сборка панели не будет завершена?
Код "фиктивной панели":
class MyPanel(wx.Panel)
def _createIfNotCreated(self):
if self.is_created:
return
self.makeComponents()
self.layoutComponents()
self.is_created=1
def notifyDisplay(self):
self._createIfNotCreated()
self.refresh()
def makeComponents(self):
self._t = StaticText(self, ...)
[... lots of text, views, etc]
def layoutComponents(self):
sizer = BoxSizer(...)
sizer.Add(...)
[... etc...]
self.setSizer(sizer)
self.setAutoLayout(1)
sizer.fitSizer(self)
Новые вопросы
python
Python - это мультипарадигмальный динамически типизированный многоцелевой язык программирования, разработанный для быстрого (для изучения, использования и понимания) и для обеспечения чистого и унифицированного синтаксиса. Обычно используются две похожие, но несовместимые версии Python, Python 2.7 и 3.x. Для специфичных для версии вопросов Python добавьте тег [python-2.7] или [python-3.x]. При использовании варианта или библиотеки Python (например, Jython, PyPy, Pandas, Numpy), пожалуйста, включите их в теги.