Передача данных между объектами в Python - PullRequest
1 голос
/ 12 октября 2010

Я новичок в python и не знаю, как передавать данные между объектами.Ниже представлена ​​программа с вкладками, использующая python и wxwidgets.Как бы я мог получить доступ к экземпляру maintxt из метода GetText, поскольку они в разных классах?

Спасибо.

........

#!/usr/bin/env python
import wx


class PageText(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.maintxt = wx.TextCtrl(self, style=wx.TE_MULTILINE, pos=(0, 40), size=(850,320))

        self.Show(True)


class PageList(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.bPutText = wx.Button(self, id=-1, label='Put Text', pos=(855, 40), size=(75, 30))
        self.bPutText.Bind(wx.EVT_LEFT_DOWN, self.GetText)


    def GetText(self, event):
        # Write text into maintxt


class MainFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, title="ADMIN")

        p = wx.Panel(self)
        nb = wx.Notebook(p)

        vPageText = PageText(nb)
        vPageList = PageList(nb)

        nb.AddPage(vPageText, "Edit Text")
        nb.AddPage(vPageList, "Book List")

        sizer = wx.BoxSizer()
        sizer.Add(nb, 1, wx.EXPAND)
        p.SetSizer(sizer)

if __name__ == "__main__":
    app = wx.App()
    MainFrame().Show()
    app.MainLoop()

1 Ответ

4 голосов
/ 12 октября 2010

Похоже, вы смешиваете логику с презентацией. Возможно, у вас должна быть сеть классов моделей, которые описывают поведение вашего домена (страниц?) И затем передают экземпляры этих классов инициализаторам ваших классов представления, чтобы они знали, какие модели они представляют.

Подробнее об этом дизайне: http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller

...