2010-02-18 5 views
1

나는 나의 모양에있는 몇몇 탭을 가진 1 개의 노트북이 있고이 탭에서 나는 닫히는 탭을 % s label-button가있다.노트북의 num-page를 얻으십시오

데프 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) 

업데이트 :는 "PAGE_NUM 첫 번째 인수는 instacemethod, gtk.Widget이 아니어야합니다" 당신이 언급 한 오류 때문에 이것이다 :

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

당신이 tab_widget 등의 방법을 전달하는 것으로 보인다.

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

#이 뭔가를 수행 이전에 당신이 탭 자식 위젯을 만들 수 editor_access를 실행합니다 self.page_num (tab_child)

그러나 PAGE_NUM 첫 번째 인수는 instacemethod하지, gtk.Widget해야

+0

수정 된 답변보기 –