Gtk Widget add_child завершается с ошибкой

Я пытаюсь создать пользовательскую текстовую запись Gtk. Основная идея заключается в том, чтобы поместить кнопку внутри текстовой записи. Вот сокращенная версия моего полного кода:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
builder = Gtk.Builder()
button = Gtk.Button('button')
entry = Gtk.Entry()
entry.add_child(builder, button, "button")

Кнопка не отображается и завершается ошибкой:

(pygtk_foobar.py:26622): Gtk-CRITICAL **: gtk_buildable_add_child: 
assertion 'iface->add_child != NULL' failed

Какие-либо предложения?

1 ответ

GtkEntry виджет не GtkContainer и, следовательно, к нему нельзя добавлять или удалять дочерние виджеты.

Только виджеты, которые наследуются от GtkContainer класс может иметь детей в GTK+.

Если вы хотите поместить кнопку рядом с текстовой записью, вы должны упаковать оба виджета в контейнер, подобный GtkBox Например:

box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=2)
entry = Gtk.Entry()
button = Gtk.Button(label='button', hexpand=True)
box.add(entry)
box.add(button)
box.show_all()

Это создаст окно с записью и кнопкой.

Другие вопросы по тегам