Erzeuge ich direkt ein Objekt dieser abgeleiteten Klasse ist alles fein (z.B.:
Code: Alles auswählen
w = tkl.Window( "TKL_Window" )
Verwende ich jedoch
Code: Alles auswählen
gobject.new( tkl.Window )
Beispiel-Code (tkl.py):
Code: Alles auswählen
import gtk
import gobject
class Window( gtk.Window ):
registered = False
def __init__( self, name="" ):
self.__gobject_init__()
DoRegister( self, name )
def destroy( self ):
UndoRegister( self )
gtk.Window.destroy( self )
def main():
gtk.main()
def main_quit():
gtk.main_quit()
def DoRegister( wnd, name ):
if False == wnd.registered:
wnd.registered = True
print "DoRegister "+name
else:
print "already registered"
def UndoRegister( wnd ):
if True == wnd.registered:
wnd.registered = False
print "UndoRegister "
else:
print "not registered"
gobject.type_register( Window )
Code: Alles auswählen
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
<glade-interface>
<widget class="GtkWindow" id="TKL_Window">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">small</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<signal name="destroy" handler="OnDestroy" last_modification_time="Wed, 19 Apr 2006 13:01:04 GMT"/>
<child>
<widget class="GtkButton" id="destroy">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Bang! Bang!</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<signal name="clicked" handler="OnClicked" last_modification_time="Wed, 19 Apr 2006 13:01:50 GMT"/>
</widget>
</child>
</widget>
</glade-interface>
Code: Alles auswählen
import pygtk
pygtk.require( "2.0" )
import tkl, gobject, gtk, gtk.glade
def OnDestroy( *args ):
print "but I did not shoot the deputy!"
wnd.hide()
tkl.main_quit()
def OnClicked( *args ):
print "I shot the sheriff,"
wnd.destroy()
xml = gtk.glade.XML( fname="tkl.glade", typedict={'GtkWindow':'tkl+Window'} )
xml.signal_autoconnect( { "OnDestroy" : OnDestroy, "OnClicked" : OnClicked } )
wnd = xml.get_widget( "TKL_Window" )
tkl.main()
Edit (Leonidas): Code in Python-Tags gesetzt.