在tkinter中尝试显示整张图片
好的,这是一个学校的项目。
这段代码的目标是显示一个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()