gtk_widget_grab_focus() автоматически перейти к следующему полю?

Я создаю проект 'C' с полянами и gtk. Я хочу сосредоточиться на поле gtkentry с именем txt_abc и поэтому я вызвал функцию:

gtk_widget_grab_focus (txt_abc);

Сразу после имени txt_abc появляется другой виджет gtkentry с именем txt_def.

Моя проблема вместо того, чтобы фокусироваться на виджете txt_abc, курсор автоматически фокусируется на виджете txt_def, когда я запускаю приложение.

Еще одна вещь, когда я устанавливаю фокус на виджете txt_def, вызывая код:

gtk_widget_grab_focus (txt_def);

элемент управления снова фокусируется на следующем виджете в окне, т.е. txt_name.

Я хочу сфокусироваться именно на виджете, который я устанавливаю для захвата сигнала.

Как решить эту проблему.

1 ответ

Решение

Не могу воспроизвести. Напишите небольшой тестовый пример, демонстрирующий вашу проблему. В Python легко экспериментировать.

import gtk

window = gtk.Window ()
box    = gtk.VBox ()

window.add (box)
for k in range (5):
   box.add (gtk.Entry ())

window.show_all ()
window.connect ('destroy', lambda *ignored: gtk.main_quit ())

box.children () [2].grab_focus ()  # <--- works fine

gtk.main ()
Другие вопросы по тегам