One post right before mine, I found some Code I would like to use. There is an ComboPopup which has checkboxes in it. If one of These checkboxes is activated, I want to pass the selected text back to my class (i.e. MyForm). There is an StaticText called self.text. I want to Change the Label with the choosen Text of the ComboPopup.
I tried it with:
    test = MyForm()
    MyForm.OnUpdate(test,item.GetText())
as I thought that self.text is parent from MyForm(). But that doesn't work. No errors, but also no changes of the text.
What is self in this case? Is there a good way to find out what self is ? Like print the Name or anything :-)
My Code:
import wx
import wx.stc
from wx.lib.mixins.listctrl import CheckListCtrlMixin, ListCtrlAutoWidthMixin
class CheckListCtrl(wx.ListCtrl, CheckListCtrlMixin, ListCtrlAutoWidthMixin):
    def __init__(self, parent):
        wx.ListCtrl.__init__(self, parent, wx.ID_ANY, style=wx.LC_REPORT | 
                wx.SUNKEN_BORDER)
        CheckListCtrlMixin.__init__(self)
        ListCtrlAutoWidthMixin.__init__(self)
        self.SetSize(-1, -1, -1, 50)
    def OnCheckItem(self, index, flag):
        item = self.GetItem(index)
        if flag:
            what = "checked"
        else:
            what = "unchecked"
        print(f'{item.GetText()} - {what}')
        test = MyForm()
        MyForm.OnUpdate(test,item.GetText())
class ListViewComboPopup(wx.ComboPopup):
    def __init__(self):
        wx.ComboPopup.__init__(self)
        self.lc = None
    def AddItem(self, txt):
        self.lc.InsertItem(0, txt)
    def Init(self):
        self.value = -1
        self.curitem = -1
    def Create(self, parent):
        self.lc = CheckListCtrl(parent)
        self.lc.InsertColumn(0, '', width=90)
        return True
    def GetControl(self):
        return self.lc
    def OnPopup(self):
        wx.ComboPopup.OnPopup(self)
    def GetAdjustedSize(self, minWidth, prefHeight, maxHeight):
        return wx.ComboPopup.GetAdjustedSize(
            self, minWidth, 110, maxHeight)
class MyForm(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, title="Popup Menu")
        self.panel = wx.Panel(self)
        vsizer = wx.BoxSizer(wx.VERTICAL)
        comboCtrl = wx.ComboCtrl(self.panel, wx.ID_ANY, "Select Text")    
        popupCtrl = ListViewComboPopup()
        comboCtrl.SetPopupControl(popupCtrl)
        popupCtrl.AddItem("Text One")
        self.txt = wx.StaticText(self.panel,-1,style = wx.ALIGN_LEFT)
        self.txt.SetLabel("Startup Text")
        vsizer.Add(comboCtrl,1,wx.EXPAND)
        vsizer.Add(self.txt,1,wx.EXPAND)
        self.panel.SetSizer(vsizer)
    def OnUpdate(self, txt):
        self.txt.SetLabel(txt) 
if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm().Show()
    app.MainLoop()
 
     
     
     
    