Python 2.7 如何使用wxPython返回所选复选框?
我想执行以下任务,但无法完成: 1] 在“OnApply”下获取选中选项 2] 一旦我选中了几个选项,那么“选择”或“取消选择全部”将不会选择/取消选择那些未手动选择/选择的选项 我是否需要索引所有复选框选项以执行上述任务 为实现这一目标提供的任何帮助都将非常感激。如果不清楚,请告诉我Python 2.7 如何使用wxPython返回所选复选框?,python-2.7,wxpython,Python 2.7,Wxpython,我想执行以下任务,但无法完成: 1] 在“OnApply”下获取选中选项 2] 一旦我选中了几个选项,那么“选择”或“取消选择全部”将不会选择/取消选择那些未手动选择/选择的选项 我是否需要索引所有复选框选项以执行上述任务 为实现这一目标提供的任何帮助都将非常感激。如果不清楚,请告诉我 import wx class MyCheckBox(wx.Frame): def __init__(self, parent, id, title): wx.Frame.__init_
import wx
class MyCheckBox(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, 'Checking Options', size=(470, 400))
panel = wx.Panel(self, -1)
self.cb = wx.CheckBox(panel, -1, '', (120, 75))
self.cb.SetValue(False)
self.cb = wx.CheckBox(panel, -1, '', (200, 75))
self.cb.SetValue(False)
self.cb = wx.CheckBox(panel, -1, '', (278, 75))
self.cb.SetValue(False)
self.cb = wx.CheckBox(panel, -1, '', (356, 75))
self.cb.SetValue(False)
self.cb = wx.CheckBox(panel, -1, '', (120, 105))
self.cb.SetValue(False)
self.cb = wx.CheckBox(panel, -1, '', (200, 105))
self.cb.SetValue(False)
self.cb = wx.CheckBox(panel, -1, '', (278, 105))
self.cb.SetValue(False)
self.cb = wx.CheckBox(panel, -1, '', (356, 105))
self.cb.SetValue(False)
wx.StaticText(panel, -1, "Send output to File", (70, 255))
self.cb = wx.CheckBox(panel, -1, '', (50, 255))
self.cb.SetValue(True)
wx.EVT_CHECKBOX(self, self.cb.GetId(), self.ShowTitle)
self.btnSelect = wx.Button(panel, label="Select All", pos=(45, 295))
self.Bind(wx.EVT_BUTTON, self.OnSelectAll, id = self.btnSelect.GetId())
self.btnUnSelectAll = wx.Button(panel, label="Unselect All*", pos=(173, 295))
self.Bind(wx.EVT_BUTTON, self.OnUnSelectAll, id = self.btnUnSelectAll.GetId())
self.btnApply = wx.Button(panel, label="Apply/Close", pos=(305, 295))
self.Bind(wx.EVT_BUTTON, self.OnApply, id = self.btnApply.GetId())
wx.StaticText(panel, -1, "* Note: 'Unselect All' button will not unselect storms that" '\n'
" have already determined", (20, 350))
self.Show()
self.Centre()
def ShowTitle(self, event):
if self.cb.GetValue():
self.SetTitle('checkbox.py')
else: self.SetTitle('')
def OnSelectAll(self, event):
self.cb.SetValue(True)
def OnUnSelectAll(self, event):
pass
def OnApply(self, event):
selection = self.cb.GetValue()
app = wx.App(0)
MyCheckBox(None, -1, 'checkbox.py')
app.MainLoop()
保存复选框供以后使用。我在下面的代码中使用了
self.cbu list
import wx
class MyCheckBox(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, 'Checking Options', size=(470, 400))
panel = wx.Panel(self, -1)
self.cb_list = []
for pos in [(120,75), (200,75), (278,75), (356,75), (120,105), (200,105), (278,105), (356,105)]:
cb = wx.CheckBox(panel, -1, '', pos)
cb.SetValue(False)
self.cb_list.append(cb)
wx.StaticText(panel, -1, "Send output to File", (70, 255))
self.cb = wx.CheckBox(panel, -1, '', (50, 255))
self.cb.SetValue(True)
wx.EVT_CHECKBOX(self, self.cb.GetId(), self.ShowTitle)
self.btnSelect = wx.Button(panel, label="Select All", pos=(45, 295))
self.Bind(wx.EVT_BUTTON, self.OnSelectAll, id = self.btnSelect.GetId())
self.btnUnSelectAll = wx.Button(panel, label="Unselect All*", pos=(173, 295))
self.Bind(wx.EVT_BUTTON, self.OnUnSelectAll, id = self.btnUnSelectAll.GetId())
self.btnApply = wx.Button(panel, label="Apply/Close", pos=(305, 295))
self.Bind(wx.EVT_BUTTON, self.OnApply, id = self.btnApply.GetId())
wx.StaticText(panel, -1, "* Note: 'Unselect All' button will not unselect storms that" '\n'
" have already determined", (20, 350))
self.Show()
self.Centre()
def ShowTitle(self, event):
if self.cb.GetValue():
self.SetTitle('checkbox.py')
else: self.SetTitle('')
def OnSelectAll(self, event):
for cb in self.cb_list:
cb.SetValue(True)
def OnUnSelectAll(self, event):
for cb in self.cb_list:
cb.SetValue(False)
def OnApply(self, event):
selection = self.cb.GetValue()
for i, cb in enumerate(self.cb_list):
if cb.GetValue():
print('{} selected'.format(i))
app = wx.App(0)
MyCheckBox(None, -1, 'checkbox.py')
app.MainLoop()
谢谢它的主要任务是返回复选框、全选和取消全选,但只取消全选那些在第一个实例中未选中的复选框。@Ibe,我不明白你的意思。(我不擅长英语读/写。)。自定义
self.cb_list
将完成您想要的任务。我需要添加一个字典来跟踪选中的选项。这可能会让我只取消选择那些在第一个实例中没有选择的。