Переместить вид tkinter на виджет - PullRequest
0 голосов
/ 02 марта 2019

Существует ли способ прямого перемещения текущего вида холста в виджет из текущего визуального объекта?

Я имею в виду, если у меня есть холст с width=5000 и height=1000 и на моем экранеу меня есть окно холста, которое показывает части screen width=300 и screen height=300, есть функция для перемещения представления к элементу, который находится в координатах (600,700) холста с использованием полос прокрутки?

1 Ответ

0 голосов
/ 02 марта 2019

Полосы прокрутки не делают ничего волшебного.Чтобы заставить работать полосу прокрутки, они просто настроены на вызов метода 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...