2016-12-24 4 views
0

Это продолжение предыдущего question виджета Gtk.SearchEntry.Скрытие перехода в Gtk

В этом вопросе мне удается открыть виджет ввода при щелчке по значку, теперь я хочу, чтобы виджет исчез после того, как он потерял фокус.

Подход, используемый в настоящее время был с:

search_entry.icon_release.connect (hide_search) 

И определяется hide_search как:

def hide_search() 
    search_button_revealer.set_reveal = true 
    search_entry_revealer.set_reveal = false 
    show_all() 

Однако это не решает проблему. Весь код можно найти here.

ответ

1

Вы, кажется, захватываете неправильный сигнал. Один у вас есть, когда вы нажимаете на кнопку внутри входа в то время как один вам нужно, это focus_out_event, это код Вала, который делает то, что вы хотите :)

search_entry.focus_out_event.connect (() => { 
    // Make sure the entry is empty so you don't 
    // close it out on the user 
    if (search_entry.get_text() == "") { 
     hide_search(); 
    } 

    return false; 
}); 
+0

я получаю: 'Не удается преобразовать из 'Application .hide_search 'в 'Gtk.Widget.focus_out_event' search_entry.focus_out_event.connect (hide_search)' с этим решением. Я обновил код в ссылке pastebin из вопроса. –

+1

Для обратного вызова требуется аргумент 'Gdk.EventFocus' и должен возвращать' bool'. См. Https://valadoc.org/gtk+-3.0/Gtk.Widget.focus_out_event.html. Для Genie я/думаю/синтаксис - 'def hide_search (e: Gdk.Event): bool' – nemequ

Смежные вопросы