回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>请考虑以下代码:</p>
<pre><code>import wx
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
wx.Frame.__init__(self, *args, **kwds)
self.cb1 = wx.CheckBox(self, -1, "CheckBox 1")
self.cb2 = wx.CheckBox(self, -1, "CheckBox 2")
self.cb3 = wx.CheckBox(self, -1, "CheckBox 3")
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.cb1, 0, wx.ADJUST_MINSIZE, 0)
sizer.Add(self.cb2, 0, wx.ADJUST_MINSIZE, 0)
sizer.Add(self.cb3, 0, wx.ADJUST_MINSIZE, 0)
self.SetSizer(sizer)
self.Layout()
self.Bind(wx.EVT_CHECKBOX, self.OnCb1, self.cb1)
self.Bind(wx.EVT_CHECKBOX, self.OnCb2, self.cb2)
def OnCb1(self, evt):
self.cb2.SetValue(evt.IsChecked())
def OnCb2(self, evt):
self.cb3.SetValue(evt.IsChecked())
if __name__ == "__main__":
app = wx.PySimpleApp(0)
frame = MyFrame(None, -1, "")
app.SetTopWindow(frame)
frame.Show()
app.MainLoop()
</code></pre>
<p>这里我有3个复选框绑定在一起,所以<code>cb2</code>在<code>cb1</code>执行时被选中,<code>cb3</code>在<code>cb2</code>执行时被选中。但是,当我在<code>OnCb1</code>例程中设置<code>cb2</code>的值时,不会触发<code>cb2</code>复选框事件,并且<code>cb3</code>复选框保持未选中状态。因此,我想找到一种方法以某种方式手动触发<code>cb2</code>事件,以便在只选中<code>cb1</code>时同时选中所有3个框。如果有人给我提示,我会非常感激的。</p>