Modifying TKinter widgets defined in Modules

Michael Peuser mpeuser at web.de
Sat Aug 16 15:31:33 EDT 2003


Marcus,

there is no short answer of course ;-) The general acknowledged concept is
still some variation of MVC (modell - view - control) which means:
encapsulate your "functions" so they principally can be used by diffrent
visualisation concepts (or even used from an CLI).

On the other hand a general problem is when to "derive" from a class,
especially from a widget class and when just "associate" the widgets. There
is a lot of theory ("is-a", "has-a") but no strict rules. (A motor cycle
"has-a" motor  of course, but when you see it from some weird angle, it
somehow "is-a" fancy motor....)

It has turned out for me that it generally had disadvantages to derive from
a widget and put application code in that sub class. Derive from a widget
just to make new widgets.

When you put it together you can use this fancy "multiple inheritence".
Derive from from your "modell class" and mixin your "view widget".

You can find nice examples in a book you are able to read by chance ;-)
(Michael Lauer: Python und GUI-Toolkits) He explains Tkinter, wxPython, PyQt
und GTK using a quite extensive example...

Kindly
Michael P

"Marcus Schneider" <mschneider.pad at t-online.de> schrieb im Newsbeitrag
news:3f443b52.0308161038.1af149d9 at posting.google.com...
> Michael,
>
> that is very interesting; in the meantime I managed for the first time
> to create an instance of a class that contains my TKinter widgets in a
> module, so I obviously messed around with some basics...
>
> But my questionw as also about "style" of programming Python. Would I
> want to use modules just for the widget definition or would I rather
> want to put widgets and functions together in one module?
>
> What kind of structure is considered to by "good style" in Python?
>
> Thanks for the patience...
>
>
>
> "Michael Peuser" <mpeuser at web.de> wrote in message
news:<bhko0o$das$02$1 at news.t-online.com>...
> > Marcus,
> > I have no clear concept of your problem ("nix verstehen"). Newbie? What
is a
> > "main"? What in fact is the overall structure of your software system?
You
> > have first di decide where to put your "variables". In Python you will
> > generally use an object. This can be made visible as you like. You
however
> > have do decide who instantiates this object ("main" or one of the
"moduls")?
> >
> > The best way seems to do this in your "main":
> >
> > class Data: pass
> > myData=Data()
> >
> > Put all your 25 variables into it (myData.varX=None ....), then you pass
> > "myData" as a parameter to your moduls...
> >
> > Is this what helps?
> > Kindly
> > Michael P
> >
> >
> > "Marcus Schneider" <mschneider.pad at t-online.de> schrieb im Newsbeitrag
> > news:3f443b52.0308151251.7e6bbaaf at posting.google.com...
> > > Sorry if this is an extremely stupid question:
> > >
> > > I produced some Python modules with TKinter stuff and now I want to
> > > use that from my main program. The windows have wuite some user
> > > interaction. It's easy to bring them to the screen, but how do I make
> > > the communication (i.e. variables) between the main and the modules
> > > happen?
> > >
> > > Currently I call a function from the main and pass all variables in
> > > the function call, but with more then 25 variables this looks odd.
> > >
> > > And now I have to change variables in the main from the module and
> > > that doesn work at all, does it?
> > >
> > > Or can I access widget definitions from the main??
> > >
> > > What is the usual, elegant way to handle that?
> > >
> > > Thanks for any hint ;)






More information about the Python-list mailing list