passing a tuple into a class function as a single argument

Mel mwilson at the-wire.com
Fri Nov 26 08:53:21 EST 2010


greywine at gmail.com wrote:

> Hi everyone,
> 
> The following program doesn't work as expected:
> 
> 
> #Python 2.7 & wxPython 2.9
> 
> import wx
> 
> class MyFrame(wx.Frame):
>     """ We simply derive a new class of Frame. """
>     def __init__(self, parent, title):
>         wx.Frame.__init__(self, parent, title=title, size=(200,100))
>         self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)
>         self.Show(True)
> 
> app = wx.App(False)
> size=(600,400)
> frame = MyFrame(None, 'Small editor')
> #frame = MyFrame(None, 'Small editor', (600,400))
> app.MainLoop()
> 
> If I use the default size=(200,100) it's just fine.  But if I try it
> pass it a new size (600,400), I get the following error:
> Traceback (most recent call last):
>   File "C:\Python27\wxpythoneasy1.py", line 13, in <module>
>     frame = MyFrame(None, 'Small editor',((600,400)))
> TypeError: __init__() takes exactly 3 arguments (4 given)
> 
> It seems like it's begging to have it pass a different size than the
> default, but there doesn't seem to be a way to pass a tuple as a
> single argument.
> 
> Any help would be appreciate.

You have to tell __init__ what's coming.

     def __init__(self, parent, title, size):
         wx.Frame.__init__(self, parent, title=title, size=size)


and so on.

	Mel.




More information about the Python-list mailing list