gpt4 book ai didi

python - 如何从一个 wx 笔记本页面获取变量到另一个 wx 笔记本页面?

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:41 26 4
gpt4 key购买 nike

我想知道如何从 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__(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这将创建“实例变量”——具有不同值的变量,具体取决于它们所属的类实例。

您可以使用笔记本的 GetPage 从笔记本中获取页面方法。这是您修改的示例:

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()

关于python - 如何从一个 wx 笔记本页面获取变量到另一个 wx 笔记本页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3567225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com