在tkinter中尝试显示整张图片

0 投票
2 回答
3284 浏览
提问于 2025-04-18 09:13

好的,这是一个学校的项目。

这段代码的目标是显示一个450x450的GIF动画,持续20秒。

但是现在输出的结果只显示了GIF的一部分。

    photo = tkinter.PhotoImage(file = './Images/img1.gif')
    root.geometry("450x450")
    root.update()
    img = canvas.create_image(225,225, image=photo)
    root.after(20000, lambda: canvas.delete(img))
    root.mainloop()

根据我所了解,几何形状定义了窗口的大小,而图片中的坐标则定义了中心位置。

目前的结果是 https://i.stack.imgur.com/PSCce.png

而我想要的结果是 https://i.stack.imgur.com/ByFHv.jpg

2 个回答

0

你可以把你的图片固定在“西北角”,然后把坐标设置为0,0,或者像furus说的那样“把画布扩展到整个窗口”。比如,使用下面的代码,你就能让图片完整显示出来:

from tkinter import *

root = Tk()
root.geometry('300x300')

photo = PhotoImage(file = './Images/img1.gif')
root.geometry("450x450")
root.update()

canvas = Canvas(root)
canvas.pack(expand=YES, fill=BOTH)

img = canvas.create_image(0,0, anchor="nw", image=photo)
root.after(20000, lambda: canvas.delete(img))


root.mainloop()
0

把你的画布扩展到整个窗口。

import Tkinter as tkinter

root = tkinter.Tk()

canvas = tkinter.Canvas(root)
canvas.pack(fill=tkinter.BOTH, expand=1) # expand

photo = tkinter.PhotoImage(file = 'img1.gif')
root.geometry("450x450")
root.update()

img = canvas.create_image(225,225, image=photo)
#root.after(20000, lambda: canvas.delete(img))

root.mainloop()

在这里输入图片描述

撰写回答