Не могу добавить скрол в канвас, пожалуйста помогите.
Обясните сам процес, как я понимаю:
1. Создаем канвас
2. Создаем скролл
3. Вешаем к примеру скрол на какой-нибудь обект в котором будет сам наш канвас
4. Добавляем в канвас обекты, которые будут скроллиться
А дальше что? Относительно чего скрол будет работать, если объекты будут выходить за размеры канваса? Много ссылок перерыл, примеров, не могу понять, может дурак и не посилам), но очень нужно. Заранее спасибо.
Вот код:
#!/usr/bin/python from tkinter import * class main: def __init__(self, master): self.master = master self.master.title('parent') self.master.wm_state('zoomed') """ Меню """ m = Menu(self.master) #создается объект Меню на главном окне self.master.config(menu=m) #окно конфигурируется с указанием меню для него fm = Menu(m) #создается пункт меню с размещением на основном меню (m) m.add_cascade(label="Файл",menu=fm) #пункту располагается на основном меню (m) fm.add_command(label="База") #формируется список команд пункта меню fm.add_command(label="Выход") hm = Menu(m) #второй пункт меню m.add_cascade(label="Отчеты",menu=hm) hm.add_command(label="Общий") hm.add_command(label="По месяцам") """ Canvas, Frame """ #1. Добавляю главный Frame (GrandFrame) #2. Добавляю в GrandFrame Frame(HeaderTabFrame) для заголовка таблицы #3. Добавляю в GrandFrame canvas(GrandCanvas) - для скролла #4. Добавляю в GrandCanvas саму Таблицу GrandFrame = Frame(self.master, bg="gray",width=800) GrandFrame.pack(side = TOP, fill = BOTH, expand = YES) HeaderTabFrame = Frame(GrandFrame, bg="white",width=800, height=30) HeaderTabFrame.pack(side = TOP, fill = BOTH) GrandCanvas = Canvas(GrandFrame, bg="lightblue") GrandCanvas.pack(side = TOP, fill = BOTH, expand = YES) TableBody = Table(GrandCanvas) TableBody.pack() self.master.mainloop() class Cell(Entry): def __init__(self, parent): self.value = StringVar() Entry.__init__(self, parent, textvariable = self.value) class Table(Frame): def __init__(self, parent, columns = 5, rows=70): Frame.__init__(self, parent) self.cells = [[Cell(self) for i in range(columns)] for j in range(rows)] [self.cells[i][j].grid(row = i, column = j) for i in range(rows) for j in range(columns)] if __name__ == '__main__': root = Tk() main(root)