2011-09-21 42 views
1

我面臨的問題是需要pygtk應用程序中的選項卡。幾乎就像gedit一樣,但沒有任何每個孩子的小部件內容。 我遇到過gtk.Notebook,但這需要我爲每個選項卡放置一個小部件,這是我不想要的。如何在pygtk應用程序中獲取(無子)「選項卡」

原因是,我有一個小部件,但只想根據選中哪個選項卡更新其內容。

任何提示如何做到這一點? 我的想法到目前爲止只是爲每個選項卡添加一些不可見的小部件,然後連接到select-page信號。我可以將哪個小部件用作隱身小部件,還是有更好的/替代方法來實現我的目標?

回答

2

無法控制的小部件的想法的作品。但不是gtk.Invisible(這只是崩潰),但與gtk.HBox()或任何其他似乎是空的東西。

self.notebook.append_page(gtk.HBox(), gtk.Label("title")) 

現在,如果我想顯示的東西的標籤其實,我可以用重新設置父級的小部件移動到這樣當前選項卡。

class Tab(gtk.HBox): 
    def __init__(self, child): 
     self.child = child 

self.notebook.append_page(Tab(myWidget), gtk.Label("title")) 

def pageSelected(self, notebook, page, pagenum): 
    box = notebook.get_nth_page(pagenum) 
    box.child.reparent(box) 
0

您可以擁有全局窗口小部件,您可以根據需要選擇一個窗口小部件,以便在選擇該選項卡時輕鬆訪問它們。

self.notebook.append_page(self.rightBox, gtk.Label("Orders")) 

然後連接到 「切換頁面」 信號

self.notebook.connect("switch-page", self.pageSelected) 

和:

def pageSelected(self, notebook, page, pagenum): 
    name = notebook.get_tab_label(notebook.get_nth_page(pagenum)) 

現在你有 「名」 與當前所選頁面的標籤。只需測試它(如果name ==「Orders」...)即可進行交互。

希望這有些幫助!

+0

所以,當我self.rightBox多次添加到筆記本電腦,我得到警告'GtkWarning:不能設置控件父具有parent'之外的東西休息,如果我顯示'rightBox 「也在某處(儘管我可以忍受它在筆記本電腦中顯示)。你確定這有效嗎? – rumpel

+0

當然,我將它用於許多大型程序。但我只添加self.rightbox一次,並創建其他Hboxes和VBox來完成它。 – Louis

+0

那麼你可能誤解了我的問題。我想要每個選項卡中的相同小部件。但是我經過一些實驗後找到了答案。所以感謝你的努力! – rumpel

相關問題