Полосы прокрутки не делают ничего волшебного.Чтобы заставить работать полосу прокрутки, они просто настроены на вызов метода xview
или yview
холста.Ничто не мешает вам напрямую вызывать эти методы самостоятельно.
xview_moveto
и yview_moveto
принимают дробь в качестве аргумента и прокручивают холст так, чтобы эта дробь находилась выше или слева от видимой частихолста.Например, чтобы увидеть элемент с координатой х 600 на холсте с прорисовываемой областью шириной 1000 пикселей, вы можете использовать дробь 600/1000.
xview_scroll
и yview_scroll
принимают число и строку, описывающую это число.Строка должна быть либо «единицами», либо «страницами».Таким образом, значение 10 и строка «единиц» будут прокручивать вид на 10 пикселей в направлении x.
Вот пример использования методов moveto
.Он создает холст с прокручиваемой областью шириной 5000 пикселей и высотой 1000 пикселей, но с отображаемой областью 300x300.Затем он рисует прямоугольник, начиная с 600,700, а затем прокручивает его в поле зрения.Даже если прямоугольник нарисован за пределами экрана, он появится в левом верхнем углу холста.
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=300, height=300, scrollregion=(0,0,5000,1000))
canvas.pack(fill="both", expand=True)
canvas.create_rectangle(600, 700, 650, 750, fill="red")
canvas.yview_moveto(700/1000)
canvas.xview_moveto(600/5000)
root.mainloop()