Если возвращенное file
реализует io.Closer
(то есть, если у него есть метод Close
), предположим, что вы несете ответственность за его закрытие, если в документации явно не указано иное.
Вы нужно использовать gtk.Builder
вместо этого. Этот класс может загружать любое количество файлов пользовательского интерфейса, поэтому вам нужно добавить их вручную, либо в виде файлов, либо в виде строк:
self.uifile = "sdm.ui"
self.wTree = gtk.Builder()
self.wTree.add_from_file(self.uifile)
Вместо get_widget
, просто используйте get_object
на компоновщике class:
self.window = self.wTree.get_object("MainWindow")
if self.window:
self.window.connect("destroy", gtk.main_quit)
Чтобы соединить сигналы, просто используйте connect_signals
, который также принимает словарь:
dic = { "on_button1_clicked" : self.button1_clicked,
"on_MainWindow_destroy" : gtk.main_quit}
self.wTree.connect_signals(dic)
Раньше это было так (по крайней мере, в GTK + 2.12, не уверен, что он все тот же) чтобы вы могли вызывать connect_signals
только один раз, любые сигналы, которые не были подключены во время первого вызова, никогда не будут подключены. На поляне все было по-другому, поэтому будьте осторожны, если раньше использовали эту функцию.