У меня есть wx.Frame
. Мне нужно время от времени менять контент. У меня есть таймер, и каждые несколько секунд я проверяю состояние, и если состояние было изменено, мне нужно изменить содержимое фрейма.Каков рекомендуемый способ перерисовать содержимое wxframe?
Для этого я создал панель в кадре с именем panel.Reparent(None)
и создал панель с новым контентом, но кадр не обновляется вновь созданной панелью. Я попытался с уничтожить (panel.Destroy()
), но это не сработало.
Каков рекомендуемый способ изменения содержимого кадра (а не только данные, мне нужно добавить и удалить компоненты пользовательского интерфейса)?
класс TestFrame (wx.Frame): Защиту INIT (Я): wx.Frame. init (self, None, title = "Double Buffered Drawing") self.counter = 0 self.panel = wx.Panel (self, -1) wx.CheckBox (self.panel, -1, "Alpha »(35, 40), (150, 20))
# Create a timer to update the data values
self.Bind(wx.EVT_TIMER, self.OnTimeout)
self.timer = wx.Timer(self)
self.timer.Start(5000)
def OnTimeout(self, evt):
p = self.panel
self.counter = self.counter + 1
try:
p.Reparent(None)
except e:
print 'B'
if self.counter % 2 == 0:
self.panel = wx.Panel(self, -1)
wx.CheckBox(self.panel, -1, "Alpha", (35, 40), (150, 20))
self.Show() #Tried also self.Layout self.Refresh self.Update
Спасибо большое за вашу помощь. Ваши примеры замечательные, но я ищу способ завершить удаление старой панели и создать новую с другими виджетами. Мое приложение - это приложение для управления управления, поэтому мне нужно время от времени проверять состояние и на основе панели создания состояния. Кстати я не уверен, если связанный с ним я получаю эти предупреждения: (python2.7: 6210): GLib-GObject-WARNING **: неверный unclassed указатель в гипсе на 'GtkPizza» (python2.7 : 6210): GLib-GObject-WARNING **: неверный листинг из '(null) 'в' GtkObject' – user1236097
Во втором учебном пособии показано, как удалить виджеты. Просто уничтожьте панель и вставьте новую. –
WOW и снова WOW. Работает, если я использую sizer. – user1236097