有没有一种方法可以将Canvas的当前视图直接移到当前视图之外的小部件上?
我的意思是,如果我有一个带有width=5000
和height=1000
的画布,并且在我的屏幕上有一个画布窗口,该窗口显示了screen width=300
和screen height=300
的一部分,则有一个用于使用滚动条将视图移动到不带画布的坐标(600,700)
的元素上?
答案 0 :(得分:0)
滚动条不会做任何魔术。要使滚动条正常工作,只需将它们配置为调用画布的xview
或yview
方法。没有什么阻止您自己直接调用这些方法的。
xview_moveto
和yview_moveto
以分数作为参数,并滚动画布,使该分数在画布的可见部分的上方或左侧。例如,要在画布上以1000像素宽的可绘制区域查看x坐标为600的元素,可以使用分数600/1000。
xview_scroll
和yview_scroll
带有数字和描述该数字的字符串。该字符串应为“ units”或“ pages”。因此,值为10和一串“单位”将使视图在x方向上滚动10个像素。
这里是使用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()