Форум сайта python.su
Доброго времени суток, уважаемые форумчане.
Возникла ошибка в работе программы. Только изучаю, не могу решить проблему.
Ошибка следующая:
TypeError: on_entry1_changed() missing 1 required positional argument: ‘entry’
Возникает на активации сигнала on_entry1_changed. Текст получить не могу из entry1. Хотя сигнал работает - это я проверял. Прошу помочь с проблемой. Заранее благодарен.
Код программы ниже, gladefile приложен к сообщению.
#!/usr/bin/python3 from gi.repository import Gtk class entrywin: def on_window1_destroy(self, data=None): print("quit with cancel") Gtk.main_quit() def on_entry1_changed(self, widget, entry): text = self.entry.get_text() print(text) def __init__(self): self.builder = Gtk.Builder() self.builder.add_from_file('face.glade') self.window = self.builder.get_object('window1') comp = [ 'ololo', '111', '222', ] self.builder.connect_signals(self) self.liststore = Gtk.ListStore(str) for s in comp: self.liststore.append([s]) self.completion = Gtk.EntryCompletion() self.completion.set_model(self.liststore) self.completion.set_text_column(0) self.entry = self.builder.get_object('entry1').set_completion(self.completion) self.window.show_all() if __name__ == "__main__": main = entrywin() Gtk.main()
Прикреплённый файлы:
face.glade (3,7 KБ)
Офлайн
Сигнал 'changed' передает всего один параметр. Это объект получивший этот сигнал. В вашем случае Gtk.Entry Поэтому ваш обработчик будет выглядель так:
def on_entry1_changed(self, widget):
text = widget.get_text()
print(text)
Офлайн
Большое спасибо! Понял, сделал.
Офлайн