wxPython:当我关闭框架时,单选按钮如何记住我的选择

时间:2013-11-13 17:22:40

标签: python python-2.7 wxpython

您好我有一个主框架和一个按钮,当按下第二个框架打开时。第二帧有6个单选按钮。我的问题是,当我选择与已经选择的不同的单选按钮并关闭框架时,当我再次打开它时(不关闭整个程序)为什么选择第一个,我如何保留我的新选择?

以下是秒帧代码的一部分:

    self.radio1 = wx.RadioButton(self, label="1 sec",pos=(35,35),)
    self.Bind(wx.EVT_RADIOBUTTON, self.SetLab1, id=self.radio1.GetId())

    self.radio2 = wx.RadioButton(self, label="2 sec",pos=(35,55))
    self.Bind(wx.EVT_RADIOBUTTON, self.SetLab2, id=self.radio2.GetId())

    self.radio3 = wx.RadioButton(self, label="4 sec",pos=(35,75))
    self.Bind(wx.EVT_RADIOBUTTON, self.SetLab3, id=self.radio3.GetId())
                                  .
                                  .
                                  .

    self.button0=AB.AquaButton(self,label="Exit",pos=(115,142),size=(90,35))
    self.Bind(wx.EVT_BUTTON, self.OnButton0, self.button0)

def OnButton0(self, event):
    self.Close()

def SetLab1(self,event):
    global Delay
    Delay = 'A2/'

def SetLab2(self,event):
    global Delay
    Delay = 'A3/'

def SetLab3(self,event):
    global Delay
    Delay = 'A4/'

1 个答案:

答案 0 :(得分:3)

如果你关闭框架就会销毁它,当你再次构建它时,它将恢复到默认状态。

你可以这样做:

self.radio1 = wx.RadioButton(self, label="1 sec",pos=(35,35),)
self.Bind(wx.EVT_RADIOBUTTON, self.SetLab1, id=self.radio1.GetId())

self.radio2 = wx.RadioButton(self, label="2 sec",pos=(35,55))
self.Bind(wx.EVT_RADIOBUTTON, self.SetLab2, id=self.radio2.GetId())

self.radio3 = wx.RadioButton(self, label="4 sec",pos=(35,75))
self.Bind(wx.EVT_RADIOBUTTON, self.SetLab3, id=self.radio3.GetId())
global Delay
if Delay is not None:
     getattr(self,"radio"+str(int(Delay[1])-1)).SetValue(True) 

将选择与全局Delay变量中的值匹配的单选按钮。

更简单的解决方案不是“关闭”框架而是隐藏它

#instead of my_frame.Close() (or my_frame.Destroy())
my_frame.Hide()

这会保留构造的框架,因此当您下次显示它时,它仍将具有其所有值