import gi gi.require_version('Gtk', '4.0') from gi.repository import Gtk import src.utils as utils class EntryList(Gtk.Box): def __init__(self, name): Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL, spacing=10) header = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) header.append(get_label(name)) add_button = Gtk.Button(label='+') add_button.connect('clicked', lambda _: self.add_entry()) header.append(add_button) self.append(header) self._entries = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) self.append(self._entries) def get_entry_texts(self): res = [] for entry in self._entries: res.append(entry.get_first_child().get_buffer().get_text()) return res def add_entry(self, value=''): line = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) entry = Gtk.Entry() entry.set_text(value) entry.set_hexpand(True) line.append(entry) remove_button = Gtk.Button(label='-') remove_button.connect('clicked', lambda _: self._entries.remove(line)) line.append(remove_button) self._entries.append(line) def get_label(text): label = Gtk.Label() label.set_text(text) return label