Add iterability to sizer classes and corresponding unittest

This commit is contained in:
Mesalu
2018-02-08 21:19:45 -08:00
parent 6305f7f747
commit 43c223d3d2
2 changed files with 14 additions and 1 deletions

View File

@@ -151,8 +151,12 @@ def run():
import wx.siplib
return not wx.siplib.isdeleted(self)
""")
c.addPyCode('Sizer.__bool__ = Sizer.__nonzero__') # For Python 3
c.addPyMethod('__iter__', '(self)',
doc = "A Py convenience method that allows Sizers to act as iterables that will yield their wx.SizerItems."
body = "for item in self.GetChildren(): yield item")
c.addPyCode('Sizer.__bool__ = Sizer.__nonzero__') # For Python 3
#---------------------------------------------

View File

@@ -71,6 +71,15 @@ class sizer_Tests(wtc.WidgetTestCase):
self.assertTrue(items[1].IsSpacer())
self.assertTrue(items[2].Border == 5)
def test_iter(self):
bs = wx.BoxSizer()
widgetlist = [wx.Panel(self.frame) for _ in range(5)]
sizeritems = [x for x in bs]
for item in sizeritems:
self.assertTrue(isinstance(item, wx.SizerItem))
self.assertTrue([x.GetWidget() for x in bs] == widgetlist)
def test_sizerSpacers1(self):
bs = wx.BoxSizer()