В tkinter я пытаюсь создать прокручиваемый холст, содержащий виджеты, чтобы мое окно фиксированного размера могло прокручивать, чтобы использовать все виджеты. Однако при попытке установить размер полосы прокрутки путем получения размера ограничивающего прямоугольника из Canvas возвращается None
.
Мои виджеты добавляются на холст путем назначения их родителя в качестве холста и вызова grid()
для каждого. Я пытаюсь получить размер ограничивающего прямоугольника после создания и размещения виджетов.
# Create vertical scrollbar
self.scrollbar = Scrollbar(self.master, orient = VERTICAL)
# Pack on the right side and fill on the Y-axis
self.scrollbar.pack(side = RIGHT, fill = Y)
# Create container canvas, set Y-axis scroll command to scrollbar value
self.mainsection = Canvas(self.master, bg = colors["lightgray"], yscrollcommand = self.scrollbar.set)
# Pack on the left side, center, fill and expand on both axes
self.mainsection.pack(side = LEFT, anchor = CENTER, fill = BOTH, expand = True)
# Configure the scrollbar to scroll the canvas.
self.scrollbar.config(command = self.mainsection.yview)
# Widget definitions go here.
self.printsectionlabel = Label(self.mainsection, text = "Print Bills")
self.printsectionlabel.grid(row = 0)
# More widget definitions here...
# Run after all widget definitions
# Creates disabled scrollbar
self.mainsection.configure(scrollregion = self.mainsection.bbox(ALL))
# Prints "None"
print(self.mainsection.bbox(ALL))
print(self.mainsection.bbox(ALL))
должен распечатать некоторую информацию о ограничительной рамке холста; однако, он возвращает None
.