如何在Tkinter中使用Canvas实现图片垂直显示
解决图片垂直显示的问题
要让图片适配竖屏显示器垂直呈现,你需要先对图片进行旋转处理,再在Canvas中展示。以下是修改后的代码及说明:
修改后的代码
from PIL import Image, ImageTk import tkinter as tk root = tk.Tk() # 1. 打开图片并旋转为垂直方向 # rotate(90) 顺时针旋转90度,若需要逆时针旋转用rotate(270) img_original = Image.open("img11.jpg") img_rotated = img_original.rotate(90, expand=True) # expand=True确保旋转后完整显示图片 img = ImageTk.PhotoImage(img_rotated) # 2. 根据旋转后的图片尺寸设置Canvas大小(也可以保持固定尺寸,按需调整) canvas_image = tk.Canvas(root, height=img_rotated.height, width=img_rotated.width, bg="white", highlightthickness=0) # 3. 在Canvas中心显示图片(用锚点center确保居中) canvas_image.create_image(img_rotated.width//2, img_rotated.height//2, image=img, anchor="center") canvas_image.place(x=300, y=400) root.mainloop()
关键修改点说明
- 图片旋转:使用
rotate()方法,参数90是顺时针旋转90度,如果你需要逆时针旋转可以用270;expand=True是必须的,否则旋转后图片可能会被裁剪。 - Canvas尺寸适配:根据旋转后的图片实际宽高设置Canvas,避免图片被截断;如果你的竖屏显示器有固定分辨率,也可以直接设置Canvas为对应竖屏尺寸,再调整图片大小。
- 图片定位:用
create_image的锚点anchor="center"配合Canvas中心坐标,确保图片在Canvas内居中显示,替代原来的固定坐标(100,100),避免位置偏移。
如果需要固定Canvas为竖屏的固定尺寸(比如1080x1920),可以按比例缩放图片:
# 假设竖屏目标尺寸为宽1080,高1920 target_width = 1080 target_height = 1920 # 旋转后按目标尺寸缩放,LANCZOS算法保证缩放画质 img_rotated = img_original.rotate(90, expand=True).resize((target_width, target_height), Image.Resampling.LANCZOS)
内容的提问来源于stack exchange,提问作者Armand Meijers
相关产品推荐
相关产品推荐

