By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,271 Members | 1,722 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,271 IT Pros & Developers. It's quick & easy.

PyGTK : a NEW simple way to code an app

P: n/a
I was a fan of "SimpleGladeApp/tepache way" to build a pygtk app.
I've build a new efficient/dynamic way to build a pygtk app ...

Here is an example :
=================================================
class Fen(GladeApp):
"""
Window win
.title="Hello"
@delete_event
VBox
HBox
Label jo
.label="kokotte"
entry myEntry
.text="kuku"
gtkBuTTon b2
.label="33"
@clicked
Label jo
.label="koko"
Button b
.label="3"
@clicked
"""
def init(self,m):
self.jo.set_text(m)
pass
def on_b_clicked(self,*a):
self.quit(3)
def on_b2_clicked(self,*a):
self.quit(33)
def on_win_delete_event(self,*args):
self.quit(4)

f=Fen("koko2")
print f.loop()
=================================================

How it works :

in fact, the __doc__ is converted as a "glade file"
the tree of object is indented (like python way)
you can see some common pygtk widget ...
line starting with a dot is an property of the parent object.
line starting with a @ is a declaration of a event of the parent
object.
widgets are not case sensitive, and can start with "Gtk". If a second
word is provided it will be used as an "id", otherwise an unique id
will be build according the type of widget.
the window is created with glade, widgets are provided as attributs of
the instance, and signals are autoconnected on method
"on_[widgetId]_[event](self,*args)" (if a signal is missing in your
class, it warns you at run time) ....

It will not replace the use of glade-3 for complex widget ... but I
think it's an easy way to code very easily/quickly a simple pygtk
window/form.
I think it could be really useful/handly for beginners too.

for people which are involved in pygtk/python/gui ... i'd like to hear
your comments/ideas ...

Rq:
i don't provide the code now, but it will be released in next version
of "GladeApp" ( http://manatlan.infogami.com/GladeApp )
it works already, but i need to make "packing properties available"
too ...

May 11 '07 #1
Share this Question
Share on Google+
1 Reply


P: n/a
manatlan <ma******@gmail.comwrote:
I was a fan of "SimpleGladeApp/tepache way" to build a pygtk app.
I've build a new efficient/dynamic way to build a pygtk app ...
Here is an example :
=================================================
class Fen(GladeApp):
"""
Window win
.title="Hello"
@delete_event
VBox
HBox
Label jo
.label="kokotte"
entry myEntry
.text="kuku"
gtkBuTTon b2
.label="33"
@clicked
Label jo
.label="koko"
Button b
.label="3"
@clicked
"""
def init(self,m):
self.jo.set_text(m)
pass
def on_b_clicked(self,*a):
self.quit(3)
def on_b2_clicked(self,*a):
self.quit(33)
def on_win_delete_event(self,*args):
self.quit(4)
f=Fen("koko2")
print f.loop()
=================================================
How it works :
in fact, the __doc__ is converted as a "glade file"
the tree of object is indented (like python way)
you can see some common pygtk widget ...
line starting with a dot is an property of the parent object.
line starting with a @ is a declaration of a event of the parent
object.
widgets are not case sensitive, and can start with "Gtk". If a second
word is provided it will be used as an "id", otherwise an unique id
will be build according the type of widget.
the window is created with glade, widgets are provided as attributs of
the instance, and signals are autoconnected on method
"on_[widgetId]_[event](self,*args)" (if a signal is missing in your
class, it warns you at run time) ....
It will not replace the use of glade-3 for complex widget ... but I
think it's an easy way to code very easily/quickly a simple pygtk
window/form.
I think it could be really useful/handly for beginners too.
for people which are involved in pygtk/python/gui ... i'd like to hear
your comments/ideas ...
Rq:
i don't provide the code now, but it will be released in next version
of "GladeApp" ( http://manatlan.infogami.com/GladeApp )
it works already, but i need to make "packing properties available"
too ...
I'd be a little leery of overloading the __doc__ strings in this
way. (They are overloaded enough when used for doctest strings ...
but those can serve a legitimate documentary purpose and other doctests
can be stored separately).

Perhaps it would make sense to standardize on a defined member name
such as: GTK__Glade. The rest of your code could remain the same.

Are there any other Python projects using other "magically introspected
strings" approaches? I thought I saw something being used by some
"programming by contract" or some AOP (aspect oriented programming) tools
that might be using something like this.
--
Jim Dennis,
Starshine: Signed, Sealed, Delivered

Jun 10 '07 #2

This discussion thread is closed

Replies have been disabled for this discussion.