получить номер страницы тетради - PullRequest
1 голос
/ 18 февраля 2010

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

def new_tab (self, label): 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

def create_tab_label (self, title, tab_child): box = gtk.HBox () label = 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 ]

2 голосов
/ 18 февраля 2010

Если виджеты вашей страницы никогда не меняются, вы можете просто передать их вашему обратному вызову 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)

Обновление: Первым аргументом "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)
1 голос
/ 18 февраля 2010

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

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

...