2010-02-18 2 views
1

У меня есть один ноутбук с некоторыми вкладками в моей форме, и на этих вкладках у меня есть кнопка ярлыка для закрытия вкладки. У меня есть код для этого:получить номер страницы ноутбука

Защиту new_tab (я, ярлык): self.scrolled_window = gtk.ScrolledWindow()

self.add(self.scrolled_window) 
    self.scrolled_window.add_with_viewport(self.editor_access()) 

    self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) 

    label = self.create_tab_label(label,self.editor_access) 

    self.set_tab_label_packing(self.scrolled_window,False,False,2) 
    self.set_tab_label(self.scrolled_window,label) 

    self.saving = False 
    self.already_save.insert(0,self.get_n_pages() - 1) 

    label.show_all() 
    self.show_all() 
    return self.editor 

четкости create_tab_label (само, название, tab_child): коробка = Gtk. HBox() метка = gtk.Label (название) closebtn = gtk.Button()

image = gtk.Image() 
    image.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU) 

    closebtn.set_image(image) 
    closebtn.set_relief(gtk.RELIEF_NONE) 

    box.pack_start(label, True, True) 
    box.pack_end(closebtn, False, False) 

    self.show_all() 

    closebtn.connect("clicked",self.close_tab) 

    return box 

Как я могу получить PAGE_NUM вкладки, которые я закрыл с помощью этой кнопки?

спасибо.

ответ

2

Если страница виджеты никогда не изменится, вы можете просто передать их на ваш close_tab обратного вызова в качестве данных пользователя:

# In create_tab_label 
    closebtn.connect("clicked", self.close_tab, tab_child) 

def close_tab(self, button, tab_child): 
    # Do something with self.page_num(tab_child) 

Update: «PAGE_NUM первый аргумент должен быть gtk.Widget, не instacemethod» ошибки вы упомянули из-за этого:

label = self.create_tab_label(label,self.editor_access) 

кажется, что вы передаете метод как tab_widget. Обратите внимание, что ранее вы запускали editor_access создать вкладку дочерний виджет:

self.scrolled_window.add_with_viewport(self.editor_access()) 

Вы должны хранить этот виджет, так что вы можете передать его в качестве tab_widget, то есть:

editor_access = self.editor_access() 
self.scrolled_window.add_with_viewport(editor_access) 

# ... 

label = self.create_tab_label(label, editor_access) 
+0

Йоханнес, спасибо вам большое. Вы действительно помогли мне! – 0xAX

1

# Сделайте что-нибудь с self.page_num (tab_child)

Но PAGE_NUM первый аргумент должен быть gtk.Widget, не instacemethod

+0

См. Мой отредактированный ответ. –

Смежные вопросы