限制Tkinter(Python)中的.scan_dragto方法
我想知道是否有办法限制tkinter中的限制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 =
.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
方法允许您定义画布可以滚动的范围。下面是一个可以滚动但不允许无限滚动的画布示例:对不起,这是我的第一个问题。做到了