Форум сайта python.su
есть несколько классов, в каждом определяются свои переменные, потом их значение должно быть доступно в классе потомке
начало одного из классов родителей
class ActionFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, size=(200,200))
def EvtRadioBox(self, event):
self.nomer=event.GetInt())
class TableGrid(ActionFrame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, size=(200,200))
print self.nomer
Отредактировано (Окт. 12, 2010 11:45:48)
Офлайн
Ничего не понимаю.
Этот код будет работать:
class TableGrid(ActionFrame):
def __init__(self, parent):
...
self.EvtRadioBox(...)
print self.nomer
Офлайн
я наверное неправильно объясняю))
вот код
class ActionFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, size=(200,200))
self.SetBackgroundColour('#e2e2e2')
sampleList = [u'ГСМ', u'Спидометр', u'Расход']
sizer = wx.BoxSizer(wx.VERTICAL)
self.rb = wx.RadioBox(
self, -1, u"Выберете нужную таблицу", wx.DefaultPosition, wx.DefaultSize,
sampleList, 1, wx.RA_SPECIFY_COLS
)
self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, self.rb)
sizer.Add(self.rb, 0, wx.ALL, 20)
self.b = wx.Button(self, wx.ID_OK)
sizer.Add(self.b, 5, 5)
self.Bind(wx.EVT_BUTTON, self.OnClickOK, self.b)
self.SetSizer(sizer)
def OnClickOK(self, event):
print ('evt %d\n' % self.nomer)
def EvtRadioBox(self, event):
self.nomer=event.GetInt()
print ('EvtRadioBox: %d\n' % event.GetInt())
class TableGrid(ActionFrame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, size=(200,200))
panel = wx.Panel(self, -1)
self.EvtRadioBox()
print self.nomer
Отредактировано (Окт. 12, 2010 12:45:36)
Офлайн
Всё будет доступно, но:
1. В TableGrid.__init__ стоит всё же вызывать не wx.Frame.__init__, а ActionFrame.__init__.
2. В TableGrid.__init__ использование self.nomer вроде как лишено смысла – убрать.
3. В TableGrid.__init__ self.EvtRadioBox() приведёт к ошибке – убрать.
4. Если self.nomer нужен даже в том случае, если соотв. событие не произошло (а он нужен, см. ActionFrame.OnClickOK), можно поступить так:
class ActionFrame(wx.Frame):
nomer = None
def __init__(self, parent):
...
class ActionFrame(wx.Frame):
def __init__(self, parent):
...
self.rb = ...
self.nomer = self.rb.GetSelection()
...
class ActionFrame(wx.Frame):
@property
def nomer(self):
return self.rb.GetSelection()
...
Офлайн