得到笔记本的num-page

时间:2010-02-18 09:54:16

标签: pygtk

我有一个笔记本,表格中有一些标签,在这个标签中,我有标签按钮,用于关闭标签。我有这个代码:

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 个答案:

答案 0 :(得分: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)

更新:“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 :(得分:1)

  

#使用self.page_num(tab_child)执行某些操作

但是page_num第一个参数必须是gtk.Widget,而不是instacemethod