LINUX.ORG.RU

Как вариант: 1. сделать callback как common_cb( widget, event, int) 2. где делаете connect прибиндить 1 к первому виджету, а 2 ко второму.

anonymous ()

Виджеты разных классов? Тогда через

if isinstance(widget, gtk.Button):
    ...
elif isinstance(widget, gtk.FileChooserButton):
    ...
else:
   raise Exception("WTF??")

А если одного то тут уже другие методы. Я всё через gtk.Builder делаю, поэтому у меня так идёт сравнение:

if widget is self.main_button: ...
true_admin ★★★★★ ()

вообще, там есть возможность в колбеке отправлять user_data. при подключении колбека к кнопке1 в user_data помести одно значение, при подклюении к кнопке2 - другое.

Deleted ()
Ответ на: комментарий от frpaul

>А можно и так, с user_data. Но я уже написал с isinstance.

это костылеобразно. для кого user_data вводили? оно даже переводится «пользовательские данные».

Deleted ()
Ответ на: комментарий от frpaul

ага, левое ухо чесать правой пяткой тоже прикольно ;). дело хозяйское :).

Deleted ()
Ответ на: комментарий от true_admin

Короче, я вот так нужную вкладку выцепляю:

    def notebook_switch_page_cb(self, notebook, gptr, page):
        tab = notebook.get_nth_page(page)
        if tab == self.my_window:
           ...
true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

что-то не понял, в чем смысл последней проверки. Ведь и так ясно, с какой страницы пришел сигнал, раз он page присылает?

frpaul ★★ ()
Ответ на: комментарий от frpaul

неа, не ясно, там сингналы не вкладки генерят а их виджет-контейнер.

true_admin ★★★★★ ()
Ответ на: комментарий от Deleted

да, но вот непонятно какому номеру какая вкладка соответствует. Для решения этой задачи я выдёргиваю виджет активной вкладки с сравниваю с другими виджетами. А вот если бы можно было как-то user_data прицепить к каждой вкладке...

true_admin ★★★★★ ()

используй g_object_set_data()/g_object_get_data() для добавления нужной инфы к виджету, и оценивай ее в колбеке

ananas ★★★★★ ()
Ответ на: комментарий от ananas

и если есть критичность в связке этих данных можешь вкупе с g_object_(set|get)_data заюзать g_object_(ref|unref)

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.