Guest User

Untitled

a guest
Dec 19th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import wx
  3. import math
  4.  
  5.  
  6. class Example(wx.Dialog):
  7. def __init__(self, cb_titles, title):
  8. super().__init__(None, title=title)
  9. self.cb_labels = cb_titles
  10. self.panel = wx.Panel(self)
  11. self.initUI()
  12. self.Centre()
  13. self.ShowModal()
  14.  
  15. def initUI(self):
  16. vbox = wx.BoxSizer(wx.VERTICAL) # I use vbox here because I need to add other items below this grid sizer, not shown in the example.
  17. self.set_grid(vbox)
  18. border = wx.BoxSizer()
  19. border.Add(vbox, 1, wx.ALL | wx.EXPAND, 10)
  20. self.panel.SetSizer(border)
  21. self.panel.Fit()
  22.  
  23. def set_grid(self, vbox):
  24. n_cbs = len(self.cb_labels)
  25. n_col = int(math.sqrt(n_cbs))
  26. n_row = n_col
  27. while n_row * n_col < n_cbs:
  28. n_row += 1
  29. sb = wx.StaticBox(self.panel, -1, 'CheckBoxes:')
  30. sb_sizer = wx.StaticBoxSizer(sb, wx.VERTICAL)
  31. grid_sizer = wx.GridSizer(n_row, n_col, 30)
  32.  
  33. for i in range(n_cbs):
  34. cb_label = self.cb_labels[i]
  35. cb = wx.CheckBox(self.panel, label=cb_label)
  36. grid_sizer.Add(cb, 1, wx.ALIGN_CENTER_VERTICAL|wx.EXPAND)
  37. sb_sizer.Add(grid_sizer, 1, wx.ALL|wx.CENTER, 10)
  38. vbox.Add(sb_sizer, 1, wx.CENTER, 0)
  39.  
  40.  
  41.  
  42.  
  43.  
  44. app = wx.App()
  45. cb_titles = ["aaaaaaaaaaa", "bbbbbbb", "cccccccccc", "ddddddd", "eeeeeeee", "ffffffffff", "DDDDDDDDDD", 'FFFFFFFFFFFFFF', "GGGGGGGGGG"] * 3 # you can change this number
  46. Example(cb_titles, title ='Question Example')
  47. app.MainLoop()
Add Comment
Please, Sign In to add comment