Python 使tkinter画布原点居中

Python 使tkinter画布原点居中,python,tkinter,canvas,centering,Python,Tkinter,Canvas,Centering,在不将配置事件处理程序绑定到画布的情况下,是否可以将可调整大小的tkinter.canvas的原点保持在中心位置?我希望获得与以下python脚本相同的结果,但不使用bind 我找了两个小时后就放弃了。有我错过的小部件选项吗 import tkinter from PIL import ImageTk def centerCanvasOrigin(e): root.update() cnv.scan_dragto(round(cnv.winfo_width()/2), roun

在不将配置事件处理程序绑定到画布的情况下,是否可以将可调整大小的tkinter.canvas的原点保持在中心位置?我希望获得与以下python脚本相同的结果,但不使用bind

我找了两个小时后就放弃了。有我错过的小部件选项吗

import tkinter
from PIL import ImageTk

def centerCanvasOrigin(e):
    root.update()
    cnv.scan_dragto(round(cnv.winfo_width()/2), round(cnv.winfo_height()/2), 1)
    
root = tkinter.Tk()
cnv = tkinter.Canvas()
cnv.pack(fill = tkinter.BOTH, expand = 1)
cnv.bind("<Configure>", centerCanvasOrigin)
img = ImageTk.PhotoImage(file="img/image.png")
cnv.create_image(0, 0, image = img)
centerCanvasOrigin(True) #i know, sry about this :)

root.mainloop()
导入tkinter
从PIL导入ImageTk
def中心血管生成素(e):
root.update()
cnv.scan_dragto(圆形(cnv.winfo_width()/2),圆形(cnv.winfo_height()/2),1)
root=tkinter.Tk()
cnv=tkinter.Canvas()
cnv.pack(填充=tkinter.BOTH,扩展=1)
cnv.bind(“,中心血管生成素)
img=ImageTk.PhotoImage(file=“img/image.png”)
创建图像(0,0,图像=img)
centerCanvasOrigin(对)#我知道,我知道:)
root.mainloop()
在不将配置事件处理程序绑定到画布的情况下,是否可以将可调整大小的tkinter.canvas的原点保持在中心位置


不,不是。

这描述了如何通过绑定鼠标事件来快速滚动(请参见
.scan\u dragto()
部分)。您可以选择类似的尺码。我不想装订任何东西。我发布的python代码完成了我想要的任务(通过配置事件),但我感兴趣的是除了绑定之外是否还有其他解决方案。如果你想跟踪鼠标的移动,你需要绑定鼠标事件……你对绑定有什么反对意见?也许这是一个问题。如果您有一个使用
bind
的解决方案可以工作,为什么不使用
bind
?WRT性能,我相信您不需要
root.update()
调用
centercanavasorigin()
函数。