Este código me ha funcionado de chiripa, pero me he alegrado mucho puesto que ya no sabía como declarar variables para toda la clase. He creido entender un poco como se pueden definir estas variables. Como podemos ver texto1,boton1,contador y el contenedor vbox son declaradas como variables de la clase cuando se declaran antes que init y a su mismo nivel de identación. La variable contador ahora pertenece a toda la clase Ventana y por lo tanto puede ser usada desde cualquier parte inclusive desde una función como "contador", "self.contador" o también "this.contador".
Se puede ver un ejemplo de conversión de numero a cadena de caracteres: de modo que un numero declarado como int (es decir entero del inglés Integer) lo podemos convertir a cadena añadiendo .to_string().
Por otro lado podemos ver un ejemplo de Entry que es un cuadro para la introducción de texto. Este cuadro tiene múltiples metodos y propiedades. Yo en este ejemplo he usado el set_text () y el get_text. Muy sencillo. Set text sirve para introducir texto dentro y get text para obtener el texto escrito en el.
En cuanto a los contenedores VBox y HBox. Es la forma que GTK usa para ordenar nuestros controles(botones,Entrys,labels) dentro de la ventana. En este caso he elegido un VBox y lo que consigo es que los controles se introduzcan verticalmente. Atención también podemos introducir un control vertical sobre un control horizontal y viceversa. Lo cual nos da inmensas posibilidades para construir una ventana a nuestro gusto. Si bien todavía no he probado un IDE con un constructor de ventanas integrado para Genie. Pero quizás ya exista alguno como Glade o Code Bloks que sirva para Genie. No lo se. La verdad es que desde la programación con Python no utilizo este tipo de herramientas y me las ingenio creandolo desde el mismo codigo.
En cuanto a los contenedores VBox y HBox. Es la forma que GTK usa para ordenar nuestros controles(botones,Entrys,labels) dentro de la ventana. En este caso he elegido un VBox y lo que consigo es que los controles se introduzcan verticalmente. Atención también podemos introducir un control vertical sobre un control horizontal y viceversa. Lo cual nos da inmensas posibilidades para construir una ventana a nuestro gusto. Si bien todavía no he probado un IDE con un constructor de ventanas integrado para Genie. Pero quizás ya exista alguno como Glade o Code Bloks que sirva para Genie. No lo se. La verdad es que desde la programación con Python no utilizo este tipo de herramientas y me las ingenio creandolo desde el mismo codigo.
$ valac --pkg gtk+-2.0 "%f"
Aquí tenemos el código dichoso:
[indent=4]
uses
Gtk
init
Gtk.init (ref args)
var test = new Ventana ()
test.show_all ()
Gtk.main ();
class Ventana : Window
texto1: Gtk.Entry = new Gtk.Entry
boton1: Button= new Button.with_label ("Pulsa este botón")
contador: int = 0
vbox : VBox = new VBox (true, 5)
init
title = "Ventana de prueba"
default_height = 360
default_width = 560
window_position = WindowPosition.CENTER
texto1.set_text ("hola")
boton1.clicked.connect (pulsado)
destroy.connect(Gtk.main_quit)
vbox.add (boton1)
vbox.add(texto1)
add (vbox)
def pulsado (btn : Button)
this.contador++
title = contador.to_string()
btn.label = "El botón ha sido pulsado"
texto1.set_text (texto1.get_text()+ "_ "+contador.to_string())
uses
Gtk
init
Gtk.init (ref args)
var test = new Ventana ()
test.show_all ()
Gtk.main ();
class Ventana : Window
texto1: Gtk.Entry = new Gtk.Entry
boton1: Button= new Button.with_label ("Pulsa este botón")
contador: int = 0
vbox : VBox = new VBox (true, 5)
init
title = "Ventana de prueba"
default_height = 360
default_width = 560
window_position = WindowPosition.CENTER
texto1.set_text ("hola")
boton1.clicked.connect (pulsado)
destroy.connect(Gtk.main_quit)
vbox.add (boton1)
vbox.add(texto1)
add (vbox)
def pulsado (btn : Button)
this.contador++
title = contador.to_string()
btn.label = "El botón ha sido pulsado"
texto1.set_text (texto1.get_text()+ "_ "+contador.to_string())
No hay comentarios:
Publicar un comentario