wxPython: 让容器自行创建并销毁
前些日子我看见StackOverflow的一个问题,说如何动态地延时创建以及销毁容器。我那时就回答说他可以参考我以前写过的有关于如何动态创建与销毁按钮的技术博客,但也许对方实在太懒而根本没有考虑那个建议。
所以这篇文章中,我演示给大家一个范例,看看如何动态延时创建一个容器并接着销毁的过程。
以下就是需要的代码:
import wx
########################################################################
class PanelOne(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
self.countdown = wx.StaticText(self, label="This panel will self-destruct in 10 seconds")
########################################################################
class PanelTwo(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
txt = wx.StaticText(self, label="Panel Two")
########################################################################
class MainFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Panel Smacker")
self.panelOne = PanelOne(self)
self.time2die = 10
self.timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.update, self.timer)
self.timer.Start(1000)
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.panelOne, 1, wx.EXPAND)
self.SetSizer(self.sizer)
#----------------------------------------------------------------------
def update(self, event):
""""""
if self.time2die < 0:
self.panelOne.Destroy()
self.panelTwo = PanelTwo(self)
self.sizer.Add(self.panelTwo, 1, wx.EXPAND)
self.Layout()
self.timer.Stop()
else:
msg = "This panel will self-destruct in %s seconds" % self.time2die
self.panelOne.countdown.SetLabel(msg)
self.time2die -= 1
if __name__ == "__main__":
app = wx.App(False)
frame = MainFrame()
frame.Show()
app.MainLoop()当你直接运行时,你会第一次看到下图这样:

然后大概10秒后,你才会看到如下图这样:

好了,如果你想知道更多关于 timers 的信息,我还写了另一篇文章哦,欢迎大家一起学习。
相关推荐
香飘叶子 2020-09-14
RocNg 2020-06-25
举 2020-02-14
Laozizuiku 2020-01-01
jacktangj 2011-04-21
鹤之淇水 2019-05-07
hzx0 2019-05-07
albertjone 2019-05-07
cairencong 2015-01-03
小炮集揣 2012-11-10
厚嘉的it窝 2018-09-03
海水梦悠悠 2018-09-03
linchunmian 2018-08-31
FireMicrocosm 2018-08-23
pythonwangjunji 2018-04-25
xirongxudlut 2018-01-15
染血白衣 2017-12-28