Невозможно сгенерировать полосу прокрутки tkinter - PullRequest
0 голосов
/ 28 ноября 2018
self.root = tkinter.Tk()

self.frame = Frame(self.root, width = 1300, height = 1300, bg = "yellow")
self.frame.grid(row = 0 , column = 0, sticky = 'nw')
self.frame.grid_rowconfigure(0, weight=1)
self.frame.grid_columnconfigure(0, weight=1)
self.frame.grid_propagate(True)

self.canvas_main = Canvas(self.frame, 
                      height = 300, 
                      width = 300,
                      scrollregion=(500,500,0,500)
                      )

 self.canvas_main.grid(row = 0, column = 0, padx= 10, pady = 10, sticky = "news")

 self.scrollbar = Scrollbar(self.root, orient = VERTICAL, command = self.canvas_main.yview)
 self.scrollbar.grid(row = 0, column = 1, sticky = 'ns')
 self.canvas_main.configure(yscrollcommand=self.scrollbar.set)

В приведенном выше блоке кода я ввел элемент полосы прокрутки для включения вертикальной полосы прокрутки, однако он не отображается.Кто-нибудь может узнать, что я делаю не так в этом блоке?

1 Ответ

0 голосов
/ 28 ноября 2018

Вы установили область прокрутки (scrollregion) равной нулю пикселей в высоту, поэтому tkinter считает, что в вертикальном направлении прокручивать нечего.

Часто сначала выполняется рисование, а затем задаетсяобласть прокрутки, чтобы охватить все, что вы нарисовали.Вы делаете это, получая ограничивающий прямоугольник - самый маленький прямоугольник, который включает в себя все объекты холста - и затем используете его в качестве значения для scrollregion.

Пример:

canvas = tk.Canvas(...)
<draw a bunch of objects>
canvas.configure(scrollregion=canvas.bbox("all"))

Другой метод заключается в том, чтобы заранее определить, насколько велика виртуальная область рисования.Например, вы установили для холста ширину и высоту 300. Если вы хотите, чтобы фактическая область рисования была в два раза больше видимого размера, вы можете установить scrollregion в область, в два раза большую.

В этом примере прокручиваемая область начинается с 0,0 (верхний левый угол) и расширяется до 600 600 (нижний правый угол):

canvas = tk.Canvas(..., width=300, height=300)
canvas.configure(scrollregion=(0,0,600,600)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...