Per документы , connect_signals
принимают в качестве аргумента отображение или экземпляр, а
использует интроспективные возможности Python для просмотра ключей (если объект является отображением) или атрибутов (если объект является экземпляром) и пытается сопоставить их с именами обработчиков сигналов, приведенными в описании интерфейса.Обратные вызовы, на которые ссылается каждый соответствующий ключ или атрибут, связаны с их совпадающими сигналами.
Так, например, когда вы передаете "mainwindow"
, который является экземпляром str
, атрибуты являются, например, таким методомимена как upper
, lower
, isalpha
и тому подобное - не имеют ничего общего с чем-либо, что вас может заинтересовать удаленно.И зачем вам атрибуты win
обрабатывать сигналы?Что вы ожидаете от connect_signals
до do ?
Более типичный пример использования можно найти, например, в этом SO вопросе и в этом уроке , который предлагает, среди прочего, следующий пример Python:
class TutorialTextEditor:
def on_window_destroy(self, widget, data=None):
gtk.main_quit()
def __init__(self):
builder = gtk.Builder()
builder.add_from_file("tutorial.xml")
self.window = builder.get_object("window")
builder.connect_signals(self)
, как вы видите, здесь connect_signals
используется типичным способом - то есть, передает объект (self
) с on_window_destroy
метод, который (путем интроспекции) будет использоваться в качестве обработчика для сигнала, возникающего при разрушении окна.