Код
Main = Canvas(FrameBIG,height=1200,width=1500,scrollregion=Main.bbox("all"))
неверно, потому что Main
еще не существует. Должен быть
Main = Canvas(FrameBIG,background="blue", height = 500,width =500)
Main.configure(scrollregion=Main.bbox("all"))
Но это бессмысленно, потому что Main
холст был создан прямо сейчас и пуст (поэтому метод bbox
возвращает None
)
Когда вы создали полосу прокрутки с
scroll = Scrollbar(FrameBIG ,orient="vertical", command=Main.yview)
вы забыли завершить двухэтапный контракт между scroll
и Main
, поэтому вам нужно добавить строку ниже (сразу после создания scroll
)
Main.configure(yscrollcommand=scroll.set)
Теперь код такой
from tkinter import *
master = Tk()
FrameBIG = Frame(master)
Main = Canvas(FrameBIG,background="blue", height = 500,width =500)
Main.configure(scrollregion=Main.bbox("all"))
scroll = Scrollbar(FrameBIG ,orient="vertical", command=Main.yview)
Main.configure(yscrollcommand=scroll.set)
scroll.pack(side="right", fill="y")
Main.pack(side = BOTTOM, anchor = NW,fill="x")
FrameBIG.pack(anchor = W, fill = "x")
master.mainloop()
Теперь вы можете заметить, что на полосе прокрутки нет кнопки. Потому что холст Main
пуст. Добавим что-нибудь на Main
холст
FrameBIG.pack(anchor = W, fill = "x")
# creates a diagonal from coordinates (0,0) to (500,1000)
Main.create_line(0, 0, 500, 1000)
master.mainloop()
Теперь линия есть, но кнопки прокрутки еще нет, почему? Потому что вам нужно обновить scrollregion
холста Main
. Итак, давайте сделаем это с
FrameBIG.pack(anchor = W, fill = "x")
Main.create_line(0, 0, 500, 1000)
Main.configure(scrollregion=Main.bbox("all"))
master.mainloop()
Теперь он работает нормально. Вот полный код.
from tkinter import *
master = Tk()
FrameBIG = Frame(master)
Main = Canvas(FrameBIG,background="blue", height = 500,width =500)
Main.configure(scrollregion=Main.bbox("all"))
scroll = Scrollbar(FrameBIG ,orient="vertical", command=Main.yview)
Main.configure(yscrollcommand=scroll.set)
scroll.pack(side="right", fill="y")
Main.pack(side = BOTTOM, anchor = NW,fill="x")
FrameBIG.pack(anchor = W, fill = "x")
Main.create_line(0, 0, 500, 1000)
Main.configure(scrollregion=Main.bbox("all"))
master.mainloop()
В следующем вопросе опубликуйте вопрос с полным рабочим кодом, который указывает на вашу проблему. Вы будете получать ответы быстрее и точнее, хорошо? Удачного дня.
14.03.2018