Get Value From Dynamically Created Wx.checkbox
This code (thanks Mike Driscoll) creates a grid of 168 checkboxes, one for every hour of everyday. I am stuck when it comes to retrieving their values... I would like to get a dict
Solution 1:
You can create a structure to hold the check box id's and add a button to retrieve all of the data at once. This makes it easy to access which boxes have been checked and which haven't. This way you can retrieve the data in any structure you like i.e. something like this:
import wx
classMainPanel(wx.Panel):
def__init__(self, parent):
wx.Panel.__init__(self, parent)
main_sizer = wx.BoxSizer(wx.VERTICAL)
days=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
self.boxes=[]
for row inrange(7):
row_sizer = wx.BoxSizer(wx.HORIZONTAL)
day = days[row]
for col inrange(24):
name_of_checkbox = "{day}_{hour}".format(day=day, hour=col)
self.checkbox = wx.CheckBox(self, name=name_of_checkbox)
row_sizer.Add(self.checkbox, 0, wx.ALL, 5)
self.boxes.append(self.checkbox)
main_sizer.Add(row_sizer)
button = wx.Button(self,-1,"Retrieve Data")
main_sizer.Add(button)
self.Bind(wx.EVT_CHECKBOX, self.OnChecked)
self.Bind(wx.EVT_BUTTON, self.OnGetData)
self.SetSizer(main_sizer)
defOnChecked(self,event):
clicked = event.GetEventObject()
print clicked.GetName()
print event.IsChecked()
defOnGetData(self,event):
day_dict = {}
day_list = []
for i in self.boxes:
if i.IsChecked():
n = i.GetName()
day_dict[n]="Checked"
day_list.append((n,"Checked"))
print day_dict
print day_list
classMainFrame(wx.Frame):
def__init__(self):
wx.Frame.__init__(self, None, title='Hours and days', size=(850, 400))
panel = MainPanel(self)
self.Show()
if __name__ == '__main__':
app = wx.App()
frame = MainFrame()
app.MainLoop()
Solution 2:
You need bind a event when the checkbox created. Then use the getValue() function get the checkbox status.
import wx
class MainPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
main_sizer = wx.BoxSizer(wx.VERTICAL)
for row in range(7):
row_sizer = wx.BoxSizer(wx.HORIZONTAL)
for col in range(24):
name_of_checkbox = "row_{row}_col_{col}".format(row=row, col=col)
checkbox = wx.CheckBox(self, name=name_of_checkbox)
#self.Bind(wx.EVT_CHECKBOX, self.onChecked)
row_sizer.Add(checkbox, 0, wx.ALL, 5)
main_sizer.Add(row_sizer)
self.SetSizer(main_sizer)
#defonChecked(self, e):
#cb = e.GetEventObject()
#print (cb.GetName(), ' is clicked', cb.GetValue())
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='Hours and days', size=(900, 400))
panel = MainPanel(self)
self.Bind(wx.EVT_CHECKBOX, self.OnButtonClicked)
self.Show()
self.user_dict = dict()
self.initDict()
def OnButtonClicked(self, e):
cb = e.GetEventObject()
print (cb.GetName(), ' is clicked', cb.GetValue())
self.user_dict[cb.GetName()] = cb.GetValue()
print(self.user_dict)
def initDict(self):
for row in range(7):
for col in range(24):
name_of_checkbox = "row_{row}_col_{col}".format(row=row, col=col)
self.user_dict[name_of_checkbox] = False
if __name__ == '__main__':
app = wx.App()
frame = MainFrame()
app.MainLoop()
The output may like this:
(u'row_4_col_7', ' is clicked', True)
{'row_0_col_0': False, 'row_0_col_1': False, 'row_0_col_2': False, 'row_0_col_3': False, 'row_0_col_4': False, 'row_0_col_5': False, 'row_0_col_6': False, 'row_0_col_7': False, 'row_0_col_8': False, 'row_0_col_9': False, 'row_4_col_13': False, 'row_1_col_15': False, 'row_1_col_14': False, 'row_1_col_17': False, 'row_1_col_16': False, 'row_1_col_11': False, 'row_1_col_10': False, 'row_1_col_13': False, 'row_1_col_12': False, 'row_1_col_19': False, 'row_1_col_18': False, 'row_6_col_10': False, 'row_6_col_11': False, 'row_6_col_12': False, 'row_1_col_0': False, 'row_6_col_13': False, 'row_1_col_3': False, 'row_1_col_9': False, 'row_1_col_8': False, 'row_2_col_21': False, 'row_2_col_20': False, 'row_2_col_23': False, 'row_2_col_22': False, 'row_1_col_5': False, 'row_1_col_4': False, 'row_1_col_7': False, 'row_1_col_6': False, 'row_6_col_21': False, 'row_6_col_20': False, 'row_6_col_4': False, 'row_3_col_19': False, 'row_3_col_18': False, 'row_6_col_23': False, 'row_3_col_13': False, 'row_3_col_12': False, 'row_3_col_11': False, 'row_3_col_10': False, 'row_3_col_17': False, 'row_3_col_16': False, 'row_3_col_15': False, 'row_3_col_14': False, 'row_6_col_5': False, 'row_6_col_14': False, 'row_6_col_15': False, 'row_6_col_16': False, 'row_6_col_17': False, 'row_0_col_23': False, 'row_0_col_22': False, 'row_0_col_21': False, 'row_0_col_20': False, 'row_6_col_18': False, 'row_6_col_19': False, 'row_5_col_20': False, 'row_5_col_21': False, 'row_5_col_22': False, 'row_5_col_23': False, 'row_4_col_23': False, 'row_4_col_22': False, 'row_4_col_21': False, 'row_4_col_20': False, 'row_6_col_2': False, 'row_1_col_1': False, 'row_6_col_0': False, 'row_6_col_1': False, 'row_3_col_22': False, 'row_3_col_23': False, 'row_2_col_8': False, 'row_2_col_9': False, 'row_2_col_6': False, 'row_2_col_7': False, 'row_2_col_4': False, 'row_2_col_5': False, 'row_2_col_2': False, 'row_2_col_3': False, 'row_2_col_0': False, 'row_2_col_1': False, 'row_1_col_2': False, 'row_6_col_3': False, 'row_0_col_12': False, 'row_0_col_13': False, 'row_0_col_10': False, 'row_0_col_11': False, 'row_0_col_16': False, 'row_0_col_17': False, 'row_0_col_14': False, 'row_0_col_15': False, 'row_6_col_6': False, 'row_0_col_18': False, 'row_0_col_19': False, 'row_6_col_7': False, 'row_4_col_16': False, 'row_4_col_17': False, 'row_4_col_14': False, 'row_4_col_15': False, 'row_4_col_12': False, 'row_3_col_20': False, 'row_4_col_10': False, 'row_4_col_11': False, 'row_3_col_21': False, 'row_4_col_18': False, 'row_4_col_19': False, 'row_6_col_8': False, 'row_6_col_9': False, 'row_4_col_4': False, 'row_4_col_5': False, 'row_4_col_6': False, 'row_4_col_7': True, 'row_4_col_0': False, 'row_4_col_1': False, 'row_4_col_2': False, 'row_4_col_3': False, 'row_4_col_8': False, 'row_4_col_9': False, 'row_2_col_10': False, 'row_2_col_11': False, 'row_2_col_12': False, 'row_2_col_13': False, 'row_2_col_14': False, 'row_2_col_15': False, 'row_2_col_16': False, 'row_2_col_17': False, 'row_2_col_18': False, 'row_2_col_19': False, 'row_6_col_22': False, 'row_5_col_9': False, 'row_5_col_8': False, 'row_5_col_5': False, 'row_5_col_4': False, 'row_5_col_7': False, 'row_5_col_6': False, 'row_5_col_1': False, 'row_5_col_0': False, 'row_5_col_3': False, 'row_5_col_2': False, 'row_1_col_20': False, 'row_1_col_21': False, 'row_1_col_22': False, 'row_1_col_23': False, 'row_3_col_7': False, 'row_3_col_6': False, 'row_3_col_5': False, 'row_3_col_4': False, 'row_3_col_3': False, 'row_3_col_2': False, 'row_3_col_1': False, 'row_3_col_0': False, 'row_3_col_9': False, 'row_3_col_8': False, 'row_5_col_19': False, 'row_5_col_18': False, 'row_5_col_11': False, 'row_5_col_10': False, 'row_5_col_13': False, 'row_5_col_12': False, 'row_5_col_15': False, 'row_5_col_14': False, 'row_5_col_17': False, 'row_5_col_16': False}
(u'row_0_col_0', ' is clicked', True)
{'row_0_col_0': True, 'row_0_col_1': False, 'row_0_col_2': False, 'row_0_col_3': False, 'row_0_col_4': False, 'row_0_col_5': False, 'row_0_col_6': False, 'row_0_col_7': False, 'row_0_col_8': False, 'row_0_col_9': False, 'row_4_col_13': False, 'row_1_col_15': False, 'row_1_col_14': False, 'row_1_col_17': False, 'row_1_col_16': False, 'row_1_col_11': False, 'row_1_col_10': False, 'row_1_col_13': False, 'row_1_col_12': False, 'row_1_col_19': False, 'row_1_col_18': False, 'row_6_col_10': False, 'row_6_col_11': False, 'row_6_col_12': False, 'row_1_col_0': False, 'row_6_col_13': False, 'row_1_col_3': False, 'row_1_col_9': False, 'row_1_col_8': False, 'row_2_col_21': False, 'row_2_col_20': False, 'row_2_col_23': False, 'row_2_col_22': False, 'row_1_col_5': False, 'row_1_col_4': False, 'row_1_col_7': False, 'row_1_col_6': False, 'row_6_col_21': False, 'row_6_col_20': False, 'row_6_col_4': False, 'row_3_col_19': False, 'row_3_col_18': False, 'row_6_col_23': False, 'row_3_col_13': False, 'row_3_col_12': False, 'row_3_col_11': False, 'row_3_col_10': False, 'row_3_col_17': False, 'row_3_col_16': False, 'row_3_col_15': False, 'row_3_col_14': False, 'row_6_col_5': False, 'row_6_col_14': False, 'row_6_col_15': False, 'row_6_col_16': False, 'row_6_col_17': False, 'row_0_col_23': False, 'row_0_col_22': False, 'row_0_col_21': False, 'row_0_col_20': False, 'row_6_col_18': False, 'row_6_col_19': False, 'row_5_col_20': False, 'row_5_col_21': False, 'row_5_col_22': False, 'row_5_col_23': False, 'row_4_col_23': False, 'row_4_col_22': False, 'row_4_col_21': False, 'row_4_col_20': False, 'row_6_col_2': False, 'row_1_col_1': False, 'row_6_col_0': False, 'row_6_col_1': False, 'row_3_col_22': False, 'row_3_col_23': False, 'row_2_col_8': False, 'row_2_col_9': False, 'row_2_col_6': False, 'row_2_col_7': False, 'row_2_col_4': False, 'row_2_col_5': False, 'row_2_col_2': False, 'row_2_col_3': False, 'row_2_col_0': False, 'row_2_col_1': False, 'row_1_col_2': False, 'row_6_col_3': False, 'row_0_col_12': False, 'row_0_col_13': False, 'row_0_col_10': False, 'row_0_col_11': False, 'row_0_col_16': False, 'row_0_col_17': False, 'row_0_col_14': False, 'row_0_col_15': False, 'row_6_col_6': False, 'row_0_col_18': False, 'row_0_col_19': False, 'row_6_col_7': False, 'row_4_col_16': False, 'row_4_col_17': False, 'row_4_col_14': False, 'row_4_col_15': False, 'row_4_col_12': False, 'row_3_col_20': False, 'row_4_col_10': False, 'row_4_col_11': False, 'row_3_col_21': False, 'row_4_col_18': False, 'row_4_col_19': False, 'row_6_col_8': False, 'row_6_col_9': False, 'row_4_col_4': False, 'row_4_col_5': False, 'row_4_col_6': False, 'row_4_col_7': True, 'row_4_col_0': False, 'row_4_col_1': False, 'row_4_col_2': False, 'row_4_col_3': False, 'row_4_col_8': False, 'row_4_col_9': False, 'row_2_col_10': False, 'row_2_col_11': False, 'row_2_col_12': False, 'row_2_col_13': False, 'row_2_col_14': False, 'row_2_col_15': False, 'row_2_col_16': False, 'row_2_col_17': False, 'row_2_col_18': False, 'row_2_col_19': False, 'row_6_col_22': False, 'row_5_col_9': False, 'row_5_col_8': False, 'row_5_col_5': False, 'row_5_col_4': False, 'row_5_col_7': False, 'row_5_col_6': False, 'row_5_col_1': False, 'row_5_col_0': False, 'row_5_col_3': False, 'row_5_col_2': False, 'row_1_col_20': False, 'row_1_col_21': False, 'row_1_col_22': False, 'row_1_col_23': False, 'row_3_col_7': False, 'row_3_col_6': False, 'row_3_col_5': False, 'row_3_col_4': False, 'row_3_col_3': False, 'row_3_col_2': False, 'row_3_col_1': False, 'row_3_col_0': False, 'row_3_col_9': False, 'row_3_col_8': False, 'row_5_col_19': False, 'row_5_col_18': False, 'row_5_col_11': False, 'row_5_col_10': False, 'row_5_col_13': False, 'row_5_col_12': False, 'row_5_col_15': False, 'row_5_col_14': False, 'row_5_col_17': False, 'row_5_col_16': False}
(u'row_0_col_1', ' is clicked', True)
{'row_0_col_0': True, 'row_0_col_1': True, 'row_0_col_2': False, 'row_0_col_3': False, 'row_0_col_4': False, 'row_0_col_5': False, 'row_0_col_6': False, 'row_0_col_7': False, 'row_0_col_8': False, 'row_0_col_9': False, 'row_4_col_13': False, 'row_1_col_15': False, 'row_1_col_14': False, 'row_1_col_17': False, 'row_1_col_16': False, 'row_1_col_11': False, 'row_1_col_10': False, 'row_1_col_13': False, 'row_1_col_12': False, 'row_1_col_19': False, 'row_1_col_18': False, 'row_6_col_10': False, 'row_6_col_11': False, 'row_6_col_12': False, 'row_1_col_0': False, 'row_6_col_13': False, 'row_1_col_3': False, 'row_1_col_9': False, 'row_1_col_8': False, 'row_2_col_21': False, 'row_2_col_20': False, 'row_2_col_23': False, 'row_2_col_22': False, 'row_1_col_5': False, 'row_1_col_4': False, 'row_1_col_7': False, 'row_1_col_6': False, 'row_6_col_21': False, 'row_6_col_20': False, 'row_6_col_4': False, 'row_3_col_19': False, 'row_3_col_18': False, 'row_6_col_23': False, 'row_3_col_13': False, 'row_3_col_12': False, 'row_3_col_11': False, 'row_3_col_10': False, 'row_3_col_17': False, 'row_3_col_16': False, 'row_3_col_15': False, 'row_3_col_14': False, 'row_6_col_5': False, 'row_6_col_14': False, 'row_6_col_15': False, 'row_6_col_16': False, 'row_6_col_17': False, 'row_0_col_23': False, 'row_0_col_22': False, 'row_0_col_21': False, 'row_0_col_20': False, 'row_6_col_18': False, 'row_6_col_19': False, 'row_5_col_20': False, 'row_5_col_21': False, 'row_5_col_22': False, 'row_5_col_23': False, 'row_4_col_23': False, 'row_4_col_22': False, 'row_4_col_21': False, 'row_4_col_20': False, 'row_6_col_2': False, 'row_1_col_1': False, 'row_6_col_0': False, 'row_6_col_1': False, 'row_3_col_22': False, 'row_3_col_23': False, 'row_2_col_8': False, 'row_2_col_9': False, 'row_2_col_6': False, 'row_2_col_7': False, 'row_2_col_4': False, 'row_2_col_5': False, 'row_2_col_2': False, 'row_2_col_3': False, 'row_2_col_0': False, 'row_2_col_1': False, 'row_1_col_2': False, 'row_6_col_3': False, 'row_0_col_12': False, 'row_0_col_13': False, 'row_0_col_10': False, 'row_0_col_11': False, 'row_0_col_16': False, 'row_0_col_17': False, 'row_0_col_14': False, 'row_0_col_15': False, 'row_6_col_6': False, 'row_0_col_18': False, 'row_0_col_19': False, 'row_6_col_7': False, 'row_4_col_16': False, 'row_4_col_17': False, 'row_4_col_14': False, 'row_4_col_15': False, 'row_4_col_12': False, 'row_3_col_20': False, 'row_4_col_10': False, 'row_4_col_11': False, 'row_3_col_21': False, 'row_4_col_18': False, 'row_4_col_19': False, 'row_6_col_8': False, 'row_6_col_9': False, 'row_4_col_4': False, 'row_4_col_5': False, 'row_4_col_6': False, 'row_4_col_7': True, 'row_4_col_0': False, 'row_4_col_1': False, 'row_4_col_2': False, 'row_4_col_3': False, 'row_4_col_8': False, 'row_4_col_9': False, 'row_2_col_10': False, 'row_2_col_11': False, 'row_2_col_12': False, 'row_2_col_13': False, 'row_2_col_14': False, 'row_2_col_15': False, 'row_2_col_16': False, 'row_2_col_17': False, 'row_2_col_18': False, 'row_2_col_19': False, 'row_6_col_22': False, 'row_5_col_9': False, 'row_5_col_8': False, 'row_5_col_5': False, 'row_5_col_4': False, 'row_5_col_7': False, 'row_5_col_6': False, 'row_5_col_1': False, 'row_5_col_0': False, 'row_5_col_3': False, 'row_5_col_2': False, 'row_1_col_20': False, 'row_1_col_21': False, 'row_1_col_22': False, 'row_1_col_23': False, 'row_3_col_7': False, 'row_3_col_6': False, 'row_3_col_5': False, 'row_3_col_4': False, 'row_3_col_3': False, 'row_3_col_2': False, 'row_3_col_1': False, 'row_3_col_0': False, 'row_3_col_9': False, 'row_3_col_8': False, 'row_5_col_19': False, 'row_5_col_18': False, 'row_5_col_11': False, 'row_5_col_10': False, 'row_5_col_13': False, 'row_5_col_12': False, 'row_5_col_15': False, 'row_5_col_14': False, 'row_5_col_17': False, 'row_5_col_16': False}
(u'row_0_col_2', ' is clicked', True)
{'row_0_col_0': True, 'row_0_col_1': True, 'row_0_col_2': True, 'row_0_col_3': False, 'row_0_col_4': False, 'row_0_col_5': False, 'row_0_col_6': False, 'row_0_col_7': False, 'row_0_col_8': False, 'row_0_col_9': False, 'row_4_col_13': False, 'row_1_col_15': False, 'row_1_col_14': False, 'row_1_col_17': False, 'row_1_col_16': False, 'row_1_col_11': False, 'row_1_col_10': False, 'row_1_col_13': False, 'row_1_col_12': False, 'row_1_col_19': False, 'row_1_col_18': False, 'row_6_col_10': False, 'row_6_col_11': False, 'row_6_col_12': False, 'row_1_col_0': False, 'row_6_col_13': False, 'row_1_col_3': False, 'row_1_col_9': False, 'row_1_col_8': False, 'row_2_col_21': False, 'row_2_col_20': False, 'row_2_col_23': False, 'row_2_col_22': False, 'row_1_col_5': False, 'row_1_col_4': False, 'row_1_col_7': False, 'row_1_col_6': False, 'row_6_col_21': False, 'row_6_col_20': False, 'row_6_col_4': False, 'row_3_col_19': False, 'row_3_col_18': False, 'row_6_col_23': False, 'row_3_col_13': False, 'row_3_col_12': False, 'row_3_col_11': False, 'row_3_col_10': False, 'row_3_col_17': False, 'row_3_col_16': False, 'row_3_col_15': False, 'row_3_col_14': False, 'row_6_col_5': False, 'row_6_col_14': False, 'row_6_col_15': False, 'row_6_col_16': False, 'row_6_col_17': False, 'row_0_col_23': False, 'row_0_col_22': False, 'row_0_col_21': False, 'row_0_col_20': False, 'row_6_col_18': False, 'row_6_col_19': False, 'row_5_col_20': False, 'row_5_col_21': False, 'row_5_col_22': False, 'row_5_col_23': False, 'row_4_col_23': False, 'row_4_col_22': False, 'row_4_col_21': False, 'row_4_col_20': False, 'row_6_col_2': False, 'row_1_col_1': False, 'row_6_col_0': False, 'row_6_col_1': False, 'row_3_col_22': False, 'row_3_col_23': False, 'row_2_col_8': False, 'row_2_col_9': False, 'row_2_col_6': False, 'row_2_col_7': False, 'row_2_col_4': False, 'row_2_col_5': False, 'row_2_col_2': False, 'row_2_col_3': False, 'row_2_col_0': False, 'row_2_col_1': False, 'row_1_col_2': False, 'row_6_col_3': False, 'row_0_col_12': False, 'row_0_col_13': False, 'row_0_col_10': False, 'row_0_col_11': False, 'row_0_col_16': False, 'row_0_col_17': False, 'row_0_col_14': False, 'row_0_col_15': False, 'row_6_col_6': False, 'row_0_col_18': False, 'row_0_col_19': False, 'row_6_col_7': False, 'row_4_col_16': False, 'row_4_col_17': False, 'row_4_col_14': False, 'row_4_col_15': False, 'row_4_col_12': False, 'row_3_col_20': False, 'row_4_col_10': False, 'row_4_col_11': False, 'row_3_col_21': False, 'row_4_col_18': False, 'row_4_col_19': False, 'row_6_col_8': False, 'row_6_col_9': False, 'row_4_col_4': False, 'row_4_col_5': False, 'row_4_col_6': False, 'row_4_col_7': True, 'row_4_col_0': False, 'row_4_col_1': False, 'row_4_col_2': False, 'row_4_col_3': False, 'row_4_col_8': False, 'row_4_col_9': False, 'row_2_col_10': False, 'row_2_col_11': False, 'row_2_col_12': False, 'row_2_col_13': False, 'row_2_col_14': False, 'row_2_col_15': False, 'row_2_col_16': False, 'row_2_col_17': False, 'row_2_col_18': False, 'row_2_col_19': False, 'row_6_col_22': False, 'row_5_col_9': False, 'row_5_col_8': False, 'row_5_col_5': False, 'row_5_col_4': False, 'row_5_col_7': False, 'row_5_col_6': False, 'row_5_col_1': False, 'row_5_col_0': False, 'row_5_col_3': False, 'row_5_col_2': False, 'row_1_col_20': False, 'row_1_col_21': False, 'row_1_col_22': False, 'row_1_col_23': False, 'row_3_col_7': False, 'row_3_col_6': False, 'row_3_col_5': False, 'row_3_col_4': False, 'row_3_col_3': False, 'row_3_col_2': False, 'row_3_col_1': False, 'row_3_col_0': False, 'row_3_col_9': False, 'row_3_col_8': False, 'row_5_col_19': False, 'row_5_col_18': False, 'row_5_col_11': False, 'row_5_col_10': False, 'row_5_col_13': False, 'row_5_col_12': False, 'row_5_col_15': False, 'row_5_col_14': False, 'row_5_col_17': False, 'row_5_col_16': False}
Post a Comment for "Get Value From Dynamically Created Wx.checkbox"