如何让Tkinter窗口中的图像始终保持居中(缩放时不偏移)
解决Tkinter中图像随窗口调整始终居中的问题
你当前的代码里,Canvas设置了固定的超大尺寸,且用固定像素坐标创建图像,窗口调整时Canvas不会跟着缩放,图像自然没法保持居中。可以按以下方式修改:
- 让Canvas自适应窗口大小:给
pack()方法加上fill=BOTH和expand=True参数,这样Canvas会填满整个窗口并随窗口缩放。 - 使用相对坐标实现居中:
create_image时用(0.5, 0.5)作为坐标,同时设置anchor=CENTER,这样图像会以Canvas的中心为基准居中,而非固定像素点。 - 保留图像引用:把
img赋值给Canvas的属性,避免Python垃圾回收机制销毁图像。
修改后的完整代码:
from tkinter import * root = Tk() root.geometry("600x350") canvas = Canvas(root) # 让Canvas填满窗口并随窗口缩放 canvas.pack(fill=BOTH, expand=True) img = PhotoImage(file="4.png") # 用相对坐标+锚点实现居中 canvas.create_image(0.5, 0.5, image=img, anchor=CENTER) # 保留图像引用防止被回收 canvas.img = img root.mainloop()
这样调整窗口大小时,图像就会始终保持在窗口中心位置了。
内容的提问来源于stack exchange,提问作者key_alt
相关产品推荐
相关产品推荐

