By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,221 Members | 1,604 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,221 IT Pros & Developers. It's quick & easy.

Code without effect (wx demo TreeCtrl.py ImageList)

P: n/a
In the wx demoy TreeCtrl.py I find the following code, that should
have no effect but seems to be needed nevertheless.

class TestTreeCtrlPanel(wx.Panel):
def __init__(self, parent, log):
[...}
self.tree = MyTreeCtrl(self, tID, wx.DefaultPosition, ...
isz = (16,16)
il = wx.ImageList(isz[0], isz[1])
fldridx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART...
[...]

self.tree.SetImageList(il)
--> self.il = il

What is the effect of the last statement? self.il is not used
anywhere. I used similar code in my application and it crashes unless
I assign the image list to the parent panel. The name of the attribute
does not seem to matter. I can write self.foo=il just as well, but
without it it crashes.
Jul 18 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Martin Drautzburg wrote:
In the wx demoy TreeCtrl.py I find the following code, that should
have no effect but seems to be needed nevertheless.

class TestTreeCtrlPanel(wx.Panel):
def __init__(self, parent, log):
[...}
self.tree = MyTreeCtrl(self, tID, wx.DefaultPosition, ...
isz = (16,16)
il = wx.ImageList(isz[0], isz[1])
fldridx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART...
[...]

self.tree.SetImageList(il)
--> self.il = il

What is the effect of the last statement? self.il is not used
anywhere. I used similar code in my application and it crashes unless
I assign the image list to the parent panel. The name of the attribute
does not seem to matter. I can write self.foo=il just as well, but
without it it crashes.


You will probably find that without that reference to the image list it
will be garbage-collected while the images are still beign displayed,
leading to results that are at best unpredictable and at worst fatal to
your program.

regards
Steve
--
Steve Holden http://www.holdenweb.com/
Python Web Programming http://pydish.holdenweb.com/
Holden Web LLC +1 703 861 4237 +1 800 494 3119
Jul 18 '05 #2

P: n/a
"Martin Drautzburg" <ma***************@web.de> wrote in message
news:87************@web.de...
In the wx demoy TreeCtrl.py I find the following code, that should
have no effect but seems to be needed nevertheless.

class TestTreeCtrlPanel(wx.Panel):
def __init__(self, parent, log):
[...}
self.tree = MyTreeCtrl(self, tID, wx.DefaultPosition, ...
isz = (16,16)
il = wx.ImageList(isz[0], isz[1])
fldridx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART...
[...]

self.tree.SetImageList(il)
--> self.il = il

What is the effect of the last statement? self.il is not used
anywhere. I used similar code in my application and it crashes unless
I assign the image list to the parent panel. The name of the attribute
does not seem to matter. I can write self.foo=il just as well, but
without it it crashes.


Two possibilities come to mind:
- used by a base class wx.Panel for which you do not have the source
(although if this were the case, I would think the attribute name would be
significant)
- needed to retain a reference handle to the image list, to prevent it from
being garbage collected (kind of far-fetched, but consistent with the "name
it anything you want" behavior)

-- Paul
Jul 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.