Tkinter Canvas的scrollregion为何无法限制视图?滚动区域解析
Tkinter Canvas设置scrollregion=(0,0,0,0)无法限制视图的问题解析
有人发现无法通过设置scrollregion=(0,0,0,0)来限制Tkinter Canvas的视图,但官方文档显示此操作应可行且不会触发badRegion错误。本文结合相关文档与代码示例解析该问题。
scrollregion 说明
指定包含四个坐标的列表,描述矩形区域的左、上、右、下坐标。该区域用于滚动,被视为Canvas中信息的边界。每个坐标可采用COORDINATES部分给出的任意格式。
scan dragto 说明
该命令计算其x、y参数(通常为鼠标坐标)与该部件上一次scan mark命令的x、y参数之间的差值,然后将视图调整为差值乘以gain的结果(gain默认值为10)。此命令通常与部件中的鼠标移动事件关联,以实现高速拖动Canvas视图的效果,返回值为空字符串。
代码示例
import tkinter master = tkinter.Tk() c = tkinter.Canvas( master, width=100, height=100, bg="yellow", scrollregion=(0,0,0,0)) c.pack() c.create_rectangle(0,0,20,20, outline="black", fill='green') def scroll_start(event=None): c.scan_mark(event.x, event.y) def scroll_move(event=None): c.scan_dragto(event.x, event.y, gain=1) master.bind("<ButtonPress-1>", scroll_start) master.bind("<B1-Motion>", scroll_move) print('尝试通过拖动调整视图') master.mainloop()
内容的提问来源于stack exchange,提问作者Thingamabobs
相关产品推荐
相关产品推荐

