Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wxPython:当我关闭框架时,单选按钮如何记住我的选择_Python_Python 2.7_Wxpython - Fatal编程技术网

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

wxPython:当我关闭框架时,单选按钮如何记住我的选择,python,python-2.7,wxpython,Python,Python 2.7,Wxpython,你好,我有一个主框架和一个按钮,当它按下第二个框架打开。第二帧有6个单选按钮。我的问题是,当我选择一个与allready不同的单选按钮并关闭帧时,以及当我再次打开它(不关闭整个程序)时,为什么选择第一个单选按钮以及如何保留我的新选择 以下是秒帧代码的某些部分: self.radio1 = wx.RadioButton(self, label="1 sec",pos=(35,35),) self.Bind(wx.EVT_RADIOBUTTON, self.SetLab1, id=s

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

以下是秒帧代码的某些部分:

    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/'

如果关闭框架,则会将其销毁,当再次构建时,它将返回其默认状态

您可以执行以下操作:

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) 
这将选择与全局延迟变量中的值匹配的单选按钮

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

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

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

谢谢您的回答,我尝试了第二个示例,但它不起作用,而对于第一个示例,我应该怎么做?我看不出您在示例中是如何关闭框架的,因此我很难告诉您它是如何工作的。。。。编辑为更明确地说明如何选择其中一个单选按钮