martes, 26 de junio de 2012

GTK+

Implementando GTK+ con Genie


Para que nuestros programas se vean integrados en el escritorio y no en el terminal necesitamos usar las librerias GTK: Ventanas, botones, etiquetas, controles de texto,etc.

Este sería el primer ejemplo, pero atención para compilarlo necesitamos esta instrucción:  valac --pkg gtk+-2.0 "%f" dentro de las opciones del buider del IDE Geany o desde el terminal valac --pkg gtk+-2.0 nombre_archivo.gs. Es necesario que tengamos la librería de desarrollo instalada:

$ sudo apt-get install gtk+-2.0

En nuestro Geany escribiremos este codigo:

[indent=4]
// usa la libreria gtk
uses
    Gtk

// comienza la parte principal del programa
init
    Gtk.init (ref args)               // inicializa gtk
    var prueba = new ventana ()      // crea el objeto prueba
    prueba.show_all ()                  // muestra todo
    Gtk.main ();                      // comienza con el loop

class ventana : Window             // Crea una clase de ventana
    init
        title = "Ventana de prueba"          // escribe el titulo
        default_height = 250                // anchura
        default_width = 250                  // altura
        window_position = WindowPosition.CENTER  // posición
        

        // creamos un boton con la siguiente etiqueta
        var button = new Button.with_label ("Pulsa este botón")
        // Une el evento de clic de raton con la funcion pulsado

        button.clicked.connect (pulsado)
        

        // si pulsamos la x de la barra saldrá del loop
        destroy.connect(Gtk.main_quit)

 
        // añade el boton a la ventana

        add(button)

    def pulsado (btn : Button)

              // si se pulsa realiza algunos cambios.
        title = "Hola, Mundo"
        btn.label = "El botón ha sido pulsado"
       
   





3 comentarios:

  1. buen dia
    disculpa la molestia pero estoy probando a compilar le di un copy paste a tu ejemplo y me sale este error

    pruebagtk.gs:33.9-33.11: error: syntax error, expected declaration but got identifier with previous `dedent'
    btn.label = "El botón ha sido pulsado"
    ^^^

    ResponderEliminar
  2. Si, ese error puede ser por varias razones ajenas al código, dedent quiere decir indentación, es decir los espacios o tabuladores. Es un error de tabulación o de espacios. Asegurate también que haya un enter detras de la última linea de código. Si usas genie puedes observar los tabuladores y los espacios en "ver>editor>mostrar espacios" y de éste modo te aseguras de ver lo que realmente hay escrito.

    Yo solo uso los espacios para mostrar el código en éste Blog y facilitar el cortapega, pero en mi programación diaria uso tabuladores.
    Un saludo.

    ResponderEliminar
  3. Gracias amigo te diré que eso ya lo habia probado pero no funcionaba y hoy que lo volvi a hacer como dijiste funcionó, no se porque fue el poner al final el ultimo caracter de nueva linea, pero ¿que paso? ya la habia probado asi que solo cuando lo dices funciona jajaja.

    ResponderEliminar