Search code examples
gtkvala

how to use key_press_event on Gtk and Vala


Good morning, guys. I have a Gtk.Entry and I need when an event is pressed when a key is pressed. Probe with https://valadoc.org/gtk+-3.0/Gtk.Widget.key_press_event.html

But I do not know how to use it.

kilometer.unit_entry.key_press_event.connect (capture_kilometer);


private bool capture_kilometer (Gdk.EventKey key )
{
    number_to_calc = kilometer.get_text ();
    calc_kilometer_all ();
}

help me pls


Solution

  • Your Gtk.Widget key_press_event signal handler is correct but you missed the return value. The method expects the return of a boolean which should be:

    true to stop other handlers from being invoked for the event. false to propagate the event further.

    Try adding it as:

    private bool capture_kilometer (Gdk.EventKey key )
    {
        number_to_calc = kilometer.get_text ();
        calc_kilometer_all ();
        return false;
    }
    

    Alternatively you can use a lambda expression as :

    kilometer.unit_entry.key_press_event.connect ((key) => {
        number_to_calc = kilometer.get_text ();
        calc_kilometer_all ();
        return false;
    });