首页 > 解决方案 > Tkinter 滚动条位置,yview_moveto() 似乎不起作用

问题描述

考虑以下示例:

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()

预期输出: 中间的滚动条。

但是,无论我给出的值如何,我都会得到 Scrollbar ,如下所示:yview_moveto()

在此处输入图像描述

我怎样才能解决这个问题?

标签: pythonpython-3.xtkinter

解决方案


在定义canvas.yview_moveto(0.5)之前,您不应该调用。scrollregion


推荐阅读