【发布时间】:2012-04-03 16:12:50
【问题描述】:
考虑以下代码:
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()
这里我有 3 个复选框绑定在一起,所以 cb2 会在 cb1 时被检查,cb3 在 cb2 时会被检查。但是,当我在OnCb1 例程中设置cb2 的值时,不会触发cb2 复选框事件,并且cb3 复选框保持未选中状态。所以我想找到一种方法以某种方式手动触发cb2 事件,以便在仅检查cb1 时一次检查所有 3 个框。如果有人给我提示,我将不胜感激。
【问题讨论】:
标签: python event-handling wxpython