停止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
当我按下某个键时,如何在 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