Python 如何从一个wx笔记本页面到另一个wx笔记本页面获取变量?
我想知道如何从wx笔记本从一个页面到另一个页面获取变量。我在想,如果我知道变量名和页面id,应该有某种方法来引用变量。例如,如果我有以下代码,我如何从面板y引用变量x,反之亦然Python 如何从一个wx笔记本页面到另一个wx笔记本页面获取变量?,python,wxpython,Python,Wxpython,我想知道如何从wx笔记本从一个页面到另一个页面获取变量。我在想,如果我知道变量名和页面id,应该有某种方法来引用变量。例如,如果我有以下代码,我如何从面板y引用变量x,反之亦然 import wx class PanelX(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent) x = 3 class PanelY(wx.Panel): def __init
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()
在面板中创建的变量不会“保存”在类中-它们是构造函数中使用的局部变量,并且在该方法执行后立即从内存中丢弃 您必须创建前面带有“self”的变量--self.x=3 这将创建“实例变量”-根据其所属的类实例具有不同值的变量 您可以使用笔记本的方法从笔记本中获取页面。下面是您的示例:
import wx
class PanelX(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.x = 3
class PanelY(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.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)
page = nb.GetPage(0)
print "PanelX's X value is %s" % page.x
page = nb.GetPage(1)
print "PanelY's Y value is %s" % page.y
if __name__ == "__main__":
app = wx.App()
MainFrame().Show()
app.MainLoop()
+1谢谢,GetPage函数是缺少的链接。感谢您捕获局部变量。这是出于疏忽。没问题-我不确定描述本地vs实例变量的详细程度,加上我在解释这些方面非常垃圾:)除了使用页面字符串名称的nb.GetPage之外,还有其他方法吗,或者除了一个任意整数之外的其他标识符?我不会说它是任意的-它是选项卡创建的顺序。你所说的页面名称是什么意思?Page没有名字IIRC(虽然我在wx中编写代码已经有几年了)