wxpython传递信息,指针?

时间:2011-06-11 15:28:16

标签: python wxpython

我正在尝试编写一个应用程序来帮助我跟踪我的学生。基本上是一个定制的笔记本/成绩簿。去年夏天,我在去年共同修剪了一些东西,但是我需要更好的东西。

我要从数据库中提取每个学生的记录,将其显示在我的主页上,并且可以点击元素打开一个框架,以便我可以编辑它。我需要在这两个框架之间传递信息,我是一个白痴,因为我似乎无法弄清楚如何改变我遇到的示例,显示lambdas和同类信息传递。

在我的主窗口中,我有一个看起来像这样的静态文本

self.q1a_lbl = wx.StaticText(id=wxID_MAINWINDOWQ1A_LBL, label=u'87%',
      name=u'q1a_lbl', parent=self.alg_panel, pos=wx.Point(115, 48),
      size=wx.Size(23, 17), style=0)
self.q1a_lbl.SetToolTipString(u'Date \n\nNotes')
self.q1a_lbl.Bind(wx.EVT_LEFT_UP, self.OnQ1a_lblLeftUp)

然后我有了这个功能:

def OnQ1a_lblLeftUp(self, event):
    import quiz_notes
    quiz_notes.create(self).Show(True)

以图形方式工作,但除了在单击文本时打开窗口,我实际上并没有做任何事情。然后我有另一个框架

import wx

def create(parent):
return quiz_notes(parent)

[wxID_QUIZ_NOTES, wxID_QUIZ_NOTESCANCEL_BTN, wxID_QUIZ_NOTESDATEPICKERCTRL1, 
 wxID_QUIZ_NOTESENTER_BTN, wxID_QUIZ_NOTESPANEL1, wxID_QUIZ_NOTESTEXTCTRL1, 
] = [wx.NewId() for _init_ctrls in range(6)]

class quiz_notes(wx.Frame):
    def _init_ctrls(self, prnt):
...and so on

我想传递至少几个变量。最后,当我开始将数据库集成到其中时,我只会传递一个元组。或者引用它。在C中,我只使用指针。无论如何,进行更改然后返回到我的主窗口。简而言之,在这两个类之间处理数据的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

Python中没有指针,但有可变结构。您可以通过将相同的状态对象交给多个实例来共享对象之间的状态。

该状态对象应该完全取决于你想要做什么(我仍然不知道)。它可以是任何可变的,模块,类,实例,字典或列表。

在此示例中,共享状态是全局变量中的列表:

# a list is mutable
state = 'Hello World'.split()

class Class1:
    def hi(self):
        print ' '.join(state)
        # do something to the shared state
        state[0] = 'Bye'

class Class2:
    def hi(self):
        print ' '.join(state)

x = Class1()
y = Class2()
x.hi()
y.hi()

答案 1 :(得分:2)

查看Mike Driscoll的blog post on using PubSub in wxPython.

它正在wxPython中使用包含的PubSub - 只要知道它是stand-alone library,并且最新版本的API与wx中包含的API不同(一个更好的API,如果我可以这样说的话)