Я знаю, что Python, в отличие от Java, поддерживает наследование. Но может ли пользовательский класс наследовать от нескольких классов wxPython без каких-либо проблем? (Разрешает ли это дизайн wxPython?)
Заранее спасибо
Я пишу под Xubuntu 11.04 с привязкой wxPython 2.8
П.С .: Это моя попытка.
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
import wx
class Square(wx.Panel, wx.Control):
def __init__(self, parent):
wx.Panel.__init__(self, parent, wx.ID_ANY, size=(60,60), pos=(80,50))
wx.Control.__init__(self, parent)
self.SetBackgroundColour(wx.Colour(0,0,255))
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Reactive square application",
size = (300,200))
panel = wx.Panel(self, wx.ID_ANY)
square1 = Square(panel)
square2 = Square(panel)
square1.Bind(wx.EVT_BUTTON, self.OnSquareClick)
def OnSquareClick(self, event):
dialog = wx.MessageDialog(self, "You clicked on square !!!",
"Hit has been done", wx.OK)
dialog.Show(True)
if __name__ == "__main__":
app = wx.PySimpleApp()
frame = MainFrame()
frame.Show(True)
app.MainLoop()
А это трассировка стека:
swig / python обнаружил утечку памяти типа 'wxControl *', деструктор не найден.
Traceback (последний вызов был последним):
Файл "/home/laurent/Documents/Programmation/Projets/Python/SourcesDeTest/ReactiveSquare.py", строка 31, в
frame = MainFrame ()
Файл "/home/laurent/Documents/Programmation/Projets/Python/SourcesDeTest/ReactiveSquare.py", строка 19, в init
квадрат1 = квадрат (панель)
Файл "/home/laurent/Documents/Programmation/Projets/Python/SourcesDeTest/ReactiveSquare.py", строка 10, в init
wx.Control. init (self, parent)
Файл "/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", строка 11718, в init
self._setOORInfo (Я)
Файл "/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", строка 3887, в _setOORInfo
арг [0] .this.own (Ложь)
Файл "/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", строка 14606, в getattr
поднять PyDeadObjectError (self.attrStr% self._name)
wx._core.PyDeadObjectError: Часть C ++ объекта Square была удалена, доступ к атрибутам больше не разрешен.
Сценарий прекращен.