하고 싶은 일을하는 것,하지만 당신은 fraction
상단 부분은 yview_moveto(fraction)
를 사용하여 하나를 구현할 수 있습니다 화면 밖으로 설정 될 캔버스의 따라서 yview_moveto(0)
은 캔버스의 상단을 표시하고 yview_moveto(1)
은 하단을 표시합니다.
으로 표시된 버튼을 표시하는 분수 y/h
을 계산하면됩니다. h
은 캔버스 내용의 높이이고 y
캔버스에 단추가있는 높이입니다. 나는 캔버스의 경계 상자 사용하여 계산 아래
def show(iid):
bbox = canvas.bbox('all')
h = bbox[3] - bbox[1]
y = canvas.coords(iid)[1] - bbox[1]
canvas.yview_moveto(y/h)
그리고 작은 예입니다, 항목에 (1 ~ 20) 버튼 ID를 입력하고 그것을 볼 수있는 뷰를 이동하는 '쇼'를 클릭하십시오.
import tkinter as tk
def show(iid):
bbox = canvas.bbox('all')
h = bbox[3] - bbox[1]
y = canvas.coords(iid)[1] - bbox[1]
canvas.yview_moveto(y/h)
root = tk.Tk()
canvas = tk.Canvas(root, bg='white')
canvas.pack(fill='both', expand=True)
e = tk.Entry(root)
e.pack()
tk.Button(root, text='Show', command=lambda: show(e.get())).pack()
buttons = {}
for i in range(1, 21):
b = tk.Button(canvas, text='Button %i' % i)
iid = canvas.create_window(0, 30*i, anchor='nw', width=70, height=30, window=b)
buttons[iid] = b
canvas.configure(scrollregion=canvas.bbox('all'))
root.mainloop()