我有一個wx.Frame
。我需要不時更改內容。 我有一個計時器,每隔幾秒我檢查一下狀態,如果狀態改變了,我需要改變幀的內容。什麼是重繪wxframe內容的推薦方法?
爲了做到這一點,我在框架中創建了一個名爲panel.Reparent(None)
的面板,並創建了一個包含新內容的面板,但未使用新創建的面板更新該面板。我嘗試了銷燬(panel.Destroy()
),但這沒有奏效。
什麼是推薦的方式來改變幀內容(不僅數據,我需要添加和刪除UI組件)?
類TestFrame(wx.Frame): DEF 初始化(個體): wx.Frame。 (self,-1) wx.CheckBox(self.panel,-1,「Alpha,0,0,0,0) 」(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 **:鑄造成'GtkPizza」 (python2.7無效unclassed指針:6210):GLib-GObject-WARNING **:從'(null)'無效投射到'GtkObject' – user1236097
第二個教程展示瞭如何刪除小部件。只要摧毀面板,並把一個新的。 –
哇,再次哇。 如果我使用sizer,它會起作用。 – user1236097