我正在尝试编写一个应用程序来帮助我跟踪我的学生。基本上是一个定制的笔记本/成绩簿。去年夏天,我在去年共同修剪了一些东西,但是我需要更好的东西。
我要从数据库中提取每个学生的记录,将其显示在我的主页上,并且可以点击元素打开一个框架,以便我可以编辑它。我需要在这两个框架之间传递信息,我是一个白痴,因为我似乎无法弄清楚如何改变我遇到的示例,显示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中,我只使用指针。无论如何,进行更改然后返回到我的主窗口。简而言之,在这两个类之间处理数据的最佳方法是什么?
答案 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,如果我可以这样说的话)