This is a first application I develop using wxPython.
I am using PyCharm as development tool. (don't know if this is relevant)
I wrote a class which depends on wx.TreeCtrl as shown below:
import wx
class ActTree(wx.TreeCtrl):
"""
Base class for all TreeCtrl items used in the program
"""
def __init__(self, parent, *args, **kwargs):
super().__init__(parent, *args, **kwargs)
self.parent = parent
self._app = wx.GetApp()
self._frame = self.getframe()
self.selected = None
self.selectionString = None
self._root = None
self.Bind(wx.EVT_TREE_SEL_CHANGED, self.newselection)
def newselection(self, event):
self.selected = event.GetItem()
self.selectionString = self.GetItemText(self.selected)
print('TREE_SEL_CHANGED in ActTree on {}'.format(self.selectionString))
event.Skip()
When I close the frame on which I'm using this class, I get a chain of
Traceback (most recent call last):
File "D:\werkblad\SubVersion\Python\sact\pkg\classes\actTree.py", line 23, in newselection
self.selectionString = self.GetItemText(self.selected)
RuntimeError: wrapped C/C++ object of type AccessTree has been deleted
Traceback (most recent call last):
File "D:\werkblad\SubVersion\Python\sact\pkg\classes\actTree.py", line 23, in newselection
self.selectionString = self.GetItemText(self.selected)
RuntimeError: wrapped C/C++ object of type AccessTree has been deleted
The class is used as a baseclass for other classes
class AccessTree(ActTree):
"""
Tree control reflecting access rights
"""
treecount = 0
self.Bind(wx.EVT_TREE_SEL_CHANGED, self.selectRight)
where I had
def selectRight(self, event):
print(event.GetEventType())
item = event.GetItem()
print('TREE_SEL_CHANGED in accessTree on {}'.format(self.GetItemText(item)))
# item = event.GetItem()
# self._selectedRight = self._root
# self._rightKey = None
# if not item.IsOk():
# return
#
# parent = self.GetItemParent(item)
#
# if parent != self._root:
# self._rightKey = self.GetItemText(parent)
# self._selectedRight = self.GetItemText(item)
What happens is that when I close the window, I get like 9 triggers of this event (10198) and 8 RunTimeErrors.
Can anyone help me figure out what's wrong in my code. I've been trying to figure it out for days now and I'm at my end of the rope.
the version of wx I'm using:
3.0.3.dev2648+23be602 msw (phoenix)
Any suggestions are highly appreciated!