2010-04-04 70 views
0

我正在向位於tix.NoteBook中的Frame添加多個小部件。當窗口中有太多窗口部件時,我想使用滾動條,所以我把tix.ScrolledWindow放在該窗口中,並將我的窗口部件添加到此ScrolledWindow中。Python Tkinter Tix:如何在Tix中使用帶有網格的ScrolledWindow NoteBook

問題是,當使用網格()幾何管理器,滾動條出現,但它不工作(拖動條佔用整個滾動條)。

from Tkinter import * 
import Tix 

class Window: 

    def __init__(self, root): 

     self.labelList = [] 
     self.notebook = Tix.NoteBook(root, ipadx=3, ipady=3) 
     self.notebook.add('sheet_1', label="Sheet 1", underline=0) 
     self.notebook.add('sheet_2', label="Sheet 2", underline=0) 
     self.notebook.add('sheet_3', label="Sheet 3", underline=0) 
     self.notebook.pack() 
     #self.notebook.grid(row=0, column=0) 

     tab1=self.notebook.sheet_1 
     tab2=self.notebook.sheet_2 
     tab3=self.notebook.sheet_3 



     self.myMainContainer = Frame(tab1) 
     self.myMainContainer.pack() 
     #self.myMainContainer.grid(row=0, column=0) 

     scrwin = Tix.ScrolledWindow(self.myMainContainer, scrollbar='y') 
     scrwin.pack() 
     #scrwin.grid(row=0, column=0) 
     self.win = scrwin.window 


     for i in range (100): 
      self.labelList.append((Label(self.win))) 
      self.labelList[-1].config(text= "Bla", relief = SUNKEN) 
      self.labelList[-1].grid(row=i, column=0, sticky=W+E) 

root = Tix.Tk() 
myWindow = Window(root) 

root.mainloop() 

每當我改變形狀管理器中的至少一個從pack()grid(),出現問題。 (其實,我更喜歡所有容器都使用grid())。

當我不使用NoteBook小部件時,問題也不會發生。這裏的其他例子似乎都依賴於pack(). 任何想法?
非常感謝,
佐野

+0

筆記本標籤作爲[2012年清理](http://meta.stackexchange.com/questions/128315/the-great-stack-overflow-tag-question-cleanup-of-2012)的一部分被刪除。 – 2012-04-29 19:41:10

回答

1

我解決它,而無需使用'tix.scrolledWindow'。相反,我去了Fred Lundh建議的自動滾動條here。 主要問題是適應NoteBook小部件。首先,我試圖將滾動條放在根上,以便它們圍繞整個窗口。現在,每當我更改標籤頁時,我都想更改滾動條的鉤子,但Notebook的'raisecmd'不起作用。接下來,我想到了在每個選項卡上使用configure事件 - 每當引發一個新選項卡時,就調用它的大小更改和配置。
那麼,經過多次努力沒有得到滿足,我改變了我的方法,並把滾動條內的標籤。選項卡和所有子容器必須得到'grid_columnconfigure(0,weight = 1)'和'grid_rowconfigure(0,weight = 1)'設置,否則它們將不會與選項卡一起增長。