Найти - Пользователи
Полная версия: Get_text в PyGtk не работает. Прошу помощи.
Начало » GUI » Get_text в PyGtk не работает. Прошу помощи.
1
sergeich1992
Доброго времени суток, уважаемые форумчане.
Возникла ошибка в работе программы. Только изучаю, не могу решить проблему.
Ошибка следующая:
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()
b_oss

Сигнал 'changed' передает всего один параметр. Это объект получивший этот сигнал. В вашем случае Gtk.Entry Поэтому ваш обработчик будет выглядель так:

def on_entry1_changed(self, widget):
    text = widget.get_text()
    print(text)
sergeich1992
Большое спасибо! Понял, сделал.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB