3

こんにちは、1 つのメイン フレームとボタンがあり、それを押すと 2 番目のフレームが開きます。2 番目のフレームには 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/'
4

1 に答える 1

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()

これにより構築されたフレームが保持されるため、次に表示するときにすべての値が保持されます

于 2013-11-13T17:28:33.673 に答える