Stack Overflow en español Asked by Trauma on January 10, 2021
Estoy siguiendo este tutorial sobre python
+ GObjectIntrospection
. El código es muy simple:
import gi
gi.require_version( 'Gtk', '3.0' )
from gi.repository import Gtk
class Handler:
def onButtonPressed( self, button ):
print( 'Boton pulsado ... ' )
def onDestroy( self, *args ):
Gtk.main_quit( )
builder = Gtk.Builder( )
builder.add_from_file( '.archivo.glade' )
builder.connect_signals( Handler( ) )
window = builder.get_object( 'MainWindow' )
window.show_all( )
Gtk.main( )
Al ejecutarlo con python3 main.py
, aparenta ejecutarse bien, pero al cerrar la ventana (pulsando en el icono de su barra de título), dicha ventana efectivamente se cierra, pero el programa no finaliza. Da la sensación de que no se llama a la función Gtk.main_quit( )
.
En el depurador, colocando un punto de interrupción en la línea
Gtk.main_quit( )
observo que nunca se entra en ese punto. La ejecución no llega ahí. Da la sensación de que onDestroy
no es la señal a la que conectarse.
Por supuesto, he intentado cambiarlo a ‘destroy’, ‘on_destroy’, ‘Destroy’, y alguna mas, pero ninguna ha funcionado.
Asegurate de declarar las señales en Glade. El mismo tutorial muestra que el archivo .glade se debe cambiar para definir las señales onDestroy
y onButtonPressed
:
...
<signal name="destroy" handler="onDestroy" swapped="no"/>
...
<signal name="pressed" handler="onButtonPressed" swapped="no"/>
...
En este diff se pueden observar en detalle las diferencias entre los dos ejemplos de archivo .glade del tutorial.
Answered by Hernán Alarcón on January 10, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP