Я пытаюсь закодировать приложение, чтобы помочь мне отслеживать моих учеников. В основном это индивидуальный ноутбук/учебник. Я прошёл летом прошлым летом, что сработал, но мне нужно что-то лучше.
Я собираюсь вытащить каждую запись учащихся из базы данных, отобразить ее на моей главной странице и иметь элементы, которые можно щелкнуть, чтобы открыть фрейм, чтобы я мог его редактировать. Мне нужно передать информацию между этими двумя кадрами, и я идиот, потому что я не могу понять, как изменить примеры, с которыми я столкнулся, показывая информацию о классе lambdas и same-.
В моем главном окне у меня есть StaticText, который выглядит как
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 я бы просто использовал указатель. В любом случае, внесите изменения, а затем вернитесь в основное окно. Короче говоря, лучший способ работать с данными между этими двумя классами?
Отъезд Mike Driscoll сообщение в блоге об использовании PubSub в wxPython.
Он использует включенный PubSub в wxPython - просто имейте в виду, что это stand- одна библиотека, а новейшая версия API отличается к тому, который включен в wx (лучший API, если можно так сказать)
В Python нет указателей, но существуют изменяемые структуры. Вы можете разделить состояние между объектами, передав один и тот же объект state- нескольким экземплярам.
Что этот объект state- должен полностью зависеть от того, что вы пытаетесь сделать (я до сих пор не знаю). Это может быть любое изменение, модуль, класс, экземпляр, dict или список.
В этом примере общее состояние представляет собой список в глобальной переменной:
# 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()