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

2024-06-02 07:05:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道如何从一个wx笔记本的一个页面到另一个页面的变量。我在想,如果我知道变量名和页标识,应该有某种方法来引用变量。例如,如果我有以下代码,我如何从面板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()

Tags: selfinitdef页面frameclassparentwx
1条回答
网友
1楼 · 发布于 2024-06-02 07:05:52

在面板中创建的变量不会“保存”在类中—它们是构造函数中使用的局部变量,在该方法执行后立即从内存中丢弃。在

你必须在变量前面加上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()

相关问题 更多 >