Положение полосы прокрутки Tkinter, yview_moveto () не работает - PullRequest
0 голосов
/ 27 сентября 2018

Рассмотрим следующий пример:

from tkinter import *

startingWin = Tk()

canvas = Canvas(startingWin, height=600)
canvas.grid(row=0, column=0,sticky="nsew")
canvasFrame = Frame(canvas)
canvas.create_window(0, 0, window=canvasFrame, anchor='nw')

for i in range(70):
    element = Button(canvasFrame, text='Button %s ' % i)
    element.grid(row=i, column=0)

yscrollbar = Scrollbar(startingWin, orient=VERTICAL)
yscrollbar.config(command=canvas.yview)
canvas.config(yscrollcommand=yscrollbar.set)
yscrollbar.grid(row=0, column=1, sticky="ns")

canvas.yview_moveto(0.5)

canvasFrame.bind("<Configure>", lambda event: canvas.configure(scrollregion=canvas.bbox("all")))

startingWin.mainloop()

Ожидаемый результат: Полоса прокрутки посередине.

ОднакоЯ получаю полосу прокрутки всегда сверху , независимо от значения, которое я даю yview_moveto(), как показано ниже:

enter image description here

Как это исправить?

1 Ответ

0 голосов
/ 27 сентября 2018

Вы не должны вызывать canvas.yview_moveto(0.5) до тех пор, пока не будет определено scrollregion.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...