如何在 Gtk 和 Vala 上使用 key_press_event

how to use key_press_event on Gtk and Vala

早上好,伙计们。 我有一个 Gtk.Entry 并且在按下某个键时按下事件时需要。 用 https://valadoc.org/gtk+-3.0/Gtk.Widget.key_press_event.html

探测

但是我不知道怎么用

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

请帮帮我

您的 Gtk.Widget key_press_event 信号处理程序是正确的,但您错过了 return 值。该方法需要一个布尔值的 return,它应该是:

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

尝试将其添加为:

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

或者,您可以使用 lambda 表达式作为 :

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