停止Gtk.Spinner?

Stop Gtk.Spinner?

当我按下某个键时,如何在 Genie 中停止此小部件?

// 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

编辑:感谢 Al Thomas 提供了解决方案(这是范围问题):

// 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

您没有完全应用范围的概念。 在您的构造函数中,行:

var spinner = new Gtk.Spinner()

在构造函数的范围内创建一个新变量 spinner。删除 var 关键字,它将起作用:

spinner = new Gtk.Spinner()

它现在将使用在 class 范围内声明的微调器变量,因此它将在您的 tecla class 方法中可用。

我还添加了下划线来使变量成为私有变量,所以它是 仅在 class 的范围内可见,而不对程序的任何部分可见 实例化 class.

// compila con valac --pkg gtk+-3.0 nombre_archivo.gs
[indent=4]
uses Gtk

init
    Gtk.init( ref args )
    var test = new TestVentana()
    test.show_all()
    Gtk.main()

class TestVentana:Window

    _spinner: Gtk.Spinner

    construct()
        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.connect( tecla )

    def tecla( key:Gdk.EventKey ):bool
        _spinner.active = false
        return true