хорошо код:
#!/usr/bin/python
import wx
import sys
class XPinst(wx.App):
def __init__(self, redirect=False, filename=None):
wx.App.__init__(self, redirect, filename)
def OnInit(self):
frame = wx.Frame(None, -1, title='Redirect Test', size=(620,450), style=wx.STAY_ON_TOP|wx.DEFAULT_FRAME_STYLE)
panel = wx.Panel(frame, -1)
log = wx.TextCtrl(panel, -1, size=(500,400), style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
redir=RedirectText(log)
sys.stdout=redir
print 'test'
frame.Show()
return True
class RedirectText:
def __init__(self,aWxTextCtrl):
self.out=aWxTextCtrl
def write(self,string):
self.out.WriteText(string)
app = XPinst()
app.MainLoop()
добавлены:
class MyFrame(wx.Frame)
def __init__(self, parent, id, title, size=(620,450), style=wx.STAY_ON_TOP|wx.DEFAULT_FRAME_STYLE):
wx.Frame.__init__(self, parent, id, title, size=(620,450), style=wx.STAY_ON_TOP|wx.DEFAULT_FRAME_STYLE)
заменен:
frame = wx.Frame(None, -1, title='Redirect Test', size=(620,450), style=wx.STAY_ON_TOP|wx.DEFAULT_FRAME_STYLE)
с:
frame = MyFrame(None, -1, title='Redirect Test', size=(620,450), style=wx.STAY_ON_TOP|wx.DEFAULT_FRAME_STYLE)
Так вот, он не запускается ...
Я хочу иметь возможность вызывать конструктор MyFrame более одного раза в моем коде, передавая разные аргументы
Я пробовал много вещей ...
создание экземпляра MyFrame со всеми аргументами
создание экземпляра myFrame и всех, кроме аргументов по умолчанию
подпись метода конструктора со всеми аргументами
подпись метода конструктора со всеми, кроме аргументов по умолчанию
вызов метода родительского конструктора со всеми аргументами
вызов метода родительского конструктора со всеми, кроме аргументов по умолчанию
плюс учебник http://zetcode.com/wxpython/ упоминает метод, в котором количество аргументов по умолчанию и необязательных аргументов различаются! (какая разница?)
UDPATE:
"он имеет семь параметров. Первый параметр не имеет значения по умолчанию. Остальные шесть параметров имеют. Эти четыре параметра являются необязательными. Первые три являются обязательными." - http://zetcode.com/wxpython/firststeps/
ОБНОВЛЕНИЕ 2:
С исправлением точки с запятой я только что попробовал:
class MyFrame(wx.Frame):
def __init__(self, parent, id, title, size, style):
wx.Frame.__init__(self, parent, id, title, size, style)
- Я говорю, какие аргументы идут (вторая строка)
- Я звоню с аргументами, которые вошли (третья строка)
ОБНОВЛЕНИЕ 3:
полное сообщение об ошибке:
Traceback (most recent call last):
File "test.py", line 29, in <module>
app = XPinst()
File "test.py", line 8, in __init__
wx.App.__init__(self, redirect, filename)
File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 7978, in __init__
self._BootstrapApp()
File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 7552, in _BootstrapApp
return _core_.PyApp__BootstrapApp(*args, **kwargs)
File "test.py", line 10, in OnInit
frame = MyFrame(None, -1, title='Redirect Test', size=(620,450), style=wx.STAY_ON_TOP|wx.DEFAULT_FRAME_STYLE)
File "test.py", line 21, in __init__
wx.Frame.__init__(self, parent, id, title, size, style)
File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/_windows.py", line 497, in __init__
_windows_.Frame_swiginit(self,_windows_.new_Frame(*args, **kwargs))
TypeError: Expected a 2-tuple of integers or a wxSize object.
Почему это не сработало?