You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:55:59