how can I stop this widget in Genie when I press a key?
// compila con valac --pkg gtk+-3.0 nombre_archivo.gs
uses Gtk
init
Gtk.init (ref args)
var test = new TestVentana ()
test.show_all ()
Gtk.main ()
class TestVentana: Window
spinner: Gtk.Spinner
init
title = "Ejemplo Gtk"
default_height = 300
default_width = 300
border_width = 50
window_position = WindowPosition.CENTER
destroy.connect(Gtk.main_quit)
var spinner = new Gtk.Spinner ()
spinner.active = true
add (spinner)
//key_press_event += tecla // OBSOLETO
key_press_event.connect(tecla)
def tecla(key : Gdk.EventKey):bool
//spinner.active = false ???
//spinner.stop () ???
return true
EDIT: Thanks to Al Thomas who provided the solution (it was a problem of scope):
// compila con valac --pkg gtk+-3.0 nombre_archivo.gs
uses Gtk
init
Gtk.init (ref args)
var test = new TestVentana ()
test.show_all ()
Gtk.main ()
class TestVentana: Window
spinner: Gtk.Spinner
init
title = "Ejemplo Gtk"
default_height = 300
default_width = 300
border_width = 50
window_position = WindowPosition.CENTER
destroy.connect(Gtk.main_quit)
spinner = new Gtk.Spinner ()
spinner.active = true
add (spinner)
// key_press_event += tecla // OBSOLETO
key_press_event.connect(tecla)
def tecla(key : Gdk.EventKey):bool
spinner.active = false
return true
You've not fully applied the concept of scope. In your constructor, the line:
var spinner = new Gtk.Spinner()creates a new variable,
spinner, in the scope of your constructor. Remove thevarkeyword and it will work:spinner = new Gtk.Spinner()It will now use the spinner variable declared in the scope of the class and so it will be available in your
teclaclass method.I've also added the underscore to make the variable private, so it is only visible in the scope of the class and not to any part of the program that instantiates the class.