У меня проблемы с обновлением окна wxPython. В настоящее время он строит график с помощью wxmpl, который можно увеличивать, панорамировать и т. Д. Иногда пользователь может построить большой объем данных и увеличить небольшую часть, что может привести к «зависанию». Под этим я подразумеваю, что сам график не обновляется, а метки осей рисуются друг над другом. Он изменяет сюжет, просто некорректно отображает обновленную информацию. Если вы измените размер окна, график будет перерисован правильно.
Я потратил слишком много времени на копание в исходном коде и документации для wx, wxmpl и matplotlib ... Лучшее решение, которое я придумал, - это изменение размера окно для принудительной перерисовки (таким образом, чтобы правильно отображать обновленный график).
# All of these fail - displays the same, incorrect plot
# (view is a wxmpl.PlotPanel object, which inherits from wx.Window among other things)
view.Refresh()
view.Update()
view.draw()
# This works, but is clearly less than ideal
view.SetSize((view.GetSize().width, view.GetSize().height+1))
view.SetSize((view.GetSize().width, view.GetSize().height-1))
Должен быть способ получше - я действительно хочу знать, что делает wx.Window.SetSize для перерисовки окна, и просто вызовите это вместо . Или есть еще один метод, который я где-то пропустил?