Принудительная перерисовка окна wxPython, график wxmpl

У меня проблемы с обновлением окна 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 для перерисовки окна, и просто вызовите это вместо . Или есть еще один метод, который я где-то пропустил?

7
задан user812786 23 June 2011 в 17:52
поделиться