限制Tkinter(Python)中的.scan_dragto方法

限制Tkinter(Python)中的.scan_dragto方法,python,tkinter,Python,Tkinter,我想知道是否有办法限制tkinter中的.scan\u dragto方法 在我当前的项目中,使用.scan_dragto正确拖动我的画布小部件。但我可以无休止地拖拽它。有没有办法限制这种阻力 我已经尝试使用maxsize为画布设置最大大小,但没有成功 我的代码的这一部分与下面的代码类似 import tkinter as tk root = tk.Tk() img = tk.Canvas(root, bg = "white", width = 1100, height =

我想知道是否有办法限制tkinter中的
.scan\u dragto
方法

在我当前的项目中,使用
.scan_dragto
正确拖动我的画布小部件。但我可以无休止地拖拽它。有没有办法限制这种阻力

我已经尝试使用
maxsize
为画布设置最大大小,但没有成功

我的代码的这一部分与下面的代码类似

import tkinter as tk

root = tk.Tk()

img = tk.Canvas(root, bg = "white", width = 1100, height = 600)
img.grid()

#Some canvas objects
#...

img.bind('<ButtonPress-1>', lambda event: img.scan_mark(event.x, event.y))
img.bind("<B1-Motion>", lambda event: img.scan_dragto(event.x, event.y, gain=1))

root.mainloop()
将tkinter作为tk导入
root=tk.tk()
img=tk.Canvas(根,bg=“白色”,宽度=1100,高度=600)
img.grid()
#一些画布对象
#...
img.bind(“”,lambda事件:img.scan_标记(event.x,event.y))
img.bind(“,lambda事件:img.scan_dragto(event.x,event.y,gain=1))
root.mainloop()

正如@Bryan Oakley在评论中指出的那样,使用
滚动区域解决了我的问题。语法如下所示:

import tkinter as tk

root = tk.Tk()

img = tk.Canvas(root, bg = "white", width = 1100, height = 600)
img.grid()
img.configure(scrollregion=(0, 0, 1000, 800))

#Some canvas objects
#...

img.bind('<ButtonPress-1>', lambda event: img.scan_mark(event.x, event.y))
img.bind("<B1-Motion>", lambda event: img.scan_dragto(event.x, event.y, gain=1))

root.mainloop()
将tkinter作为tk导入
root=tk.tk()
img=tk.Canvas(根,bg=“白色”,宽度=1100,高度=600)
img.grid()
配置(滚动区域=(0,0,1000,800))
#一些画布对象
#...
img.bind(“”,lambda事件:img.scan_标记(event.x,event.y))
img.bind(“,lambda事件:img.scan_dragto(event.x,event.y,gain=1))
root.mainloop()

img.configure(scrollregion=(0,0,1000,800))
将水平滚动从0限制到1000(在画布坐标中),将垂直滚动从0限制到800。

请在您的问题中包含一个说明您尝试了什么的选项。鉴于您是为
scan\u dragto
提供参数的人,因此您可以限制这些参数是理所当然的。另外,
scrollregion
方法允许您定义画布可以滚动的范围。下面是一个可以滚动但不允许无限滚动的画布示例:对不起,这是我的第一个问题。做到了