I am wondering how one would get a variable from one page to another from a wx notebook. I am thinking there should be some way to reference a variable if I know the variable name and page id. For example if I had the following code, how would I reference variable x from panel y and vice versa
import wx
class PanelX(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
x = 3
class PanelY(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
y=4
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="Main Frame", size = (500,450))
p = wx.Panel(self)
nb = wx.Notebook(p)
nb.AddPage(PanelX(nb), "Panel X")
nb.AddPage(PanelY(nb), "Panel Y")
sizer = wx.BoxSizer()
sizer.Add(nb, 1, wx.EXPAND)
p.SetSizer(sizer)
if __name__ == "__main__":
app = wx.App()
MainFrame().Show()
app.MainLoop()
The variables you’re creating in your panels aren’t “saved” in the class – they’re a local variable used in the constructor, and discarded from memory as soon as that method’s executed.
You’ll have to create your variables with “self” in front of them — self.x = 3
This will create “instance variables” – variables that have different values depending on the class instance they belong to.
You can get a page from a Notebook by using its GetPage method. Here’s your example modified: