1
votes

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

1

1 Answers

3
votes

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;
});