【发布时间】:2020-03-02 12:36:30
【问题描述】:
我正在开发一个 wxPython 应用程序,其中包含很多用户可更改的选项。这导致需要以某种方式处理大量复选框。
当时,我的代码如下所示:
self.checkbox1=wx.CheckBox(self.panel,label='Do X')
self.checkbox1.Bind(wx.EVT_CHECKBOX,self.DoXCheckboxHandler)
self.checkbox1.SetValue(True)
self.sizer.Add(self.checkbox1,0,wx.ALL|wx.EXPAND,5)
self.checkbox2=wx.CheckBox(self.panel,label='Do Y')
self.checkbox2.Bind(wx.EVT_CHECKBOX,self.DoYCheckboxHandler)
self.checkbox2.SetValue(True)
self.sizer.Add(self.checkbox2,0,wx.ALL|wx.EXPAND,5)
...
def DoXCheckboxHandler(self,event):
self.DoX=self.checkbox1.GetValue()
self.RefreshUserView(self)
def DoYCheckboxHandler(self,event):
self.DoY=self.checkbox2.GetValue()
self.RefreshUserView(self)
...
有没有更有效的方法(就代码长度而言)来处理多个复选框,这些复选框实际上只更改一个变量,然后调用一个相同的函数?我的方法虽然效果很好,但似乎有很多不必要的(?)重复。
当然,一种方法是完全跳过“额外”变量 - 但是,实际上我需要将这些变量与小部件分开 - 因为即使小部件被销毁,我也需要这些值(在关闭选项框架,例如)。
我们将不胜感激所有建议。
【问题讨论】: