2010-04-04 3 views
0

Я добавляю несколько виджетов к кадру, который находится в tix.NoteBook. Когда в окне слишком много виджетов, я хочу использовать полосу прокрутки, поэтому я помещаю tix.ScrolledWindow внутри этого фрейма и вместо этого добавляю свои виджеты в этот ScrolledWindow.Python Tkinter Tix: Как использовать ScrolledWindow с сеткой в ​​Tix NoteBook

Проблема в том, что при использовании диспетчера геометрии grid() появляется полоса прокрутки, но она не работает (панель перетаскивания занимает всю полосу прокрутки).

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

ярлык 'notebook' удален как часть [очистки 2012 года] (http://meta.stackexchange.com/questions/128315/the-great-stack-overflow-tag-question-cleanup-of-2012). –

ответ

1

Я решил его без использования'tix.scrolledWindow'. Вместо этого я пошел на автопробег, предложенный Фредом Лундом here. Основная проблема заключалась в адаптации к виджету NoteBook. Во-первых, я попытался поместить полосу прокрутки в корень, чтобы они окружали все окно. Теперь я хотел поменять крючок для полосы прокрутки всякий раз, когда я менял вкладку, но «видеозапись» ноутбука не работала. Затем я подумал о том, чтобы использовать событие configure на каждой вкладке - всякий раз, когда поднимается новая вкладка, вызывается ее изменение размера и конфигурация.
Ну, после долгих попыток, не будучи удовлетворенными, я изменил свой подход и поместил полосы прокрутки внутри из вкладок. Вкладки и все подконтейнеры должны получить настройки «grid_columnconfigure (0, weight = 1)» и «grid_rowconfigure (0, weight = 1)», иначе они не будут расти с вкладками.

 Смежные вопросы

  • Нет связанных вопросов^_^