试图在tkinter中显示整个图像

时间:2014-06-10 01:25:16

标签: python image tkinter photoimage

好的学校项目

此代码片段的目标是在20秒内显示450x450 gif

输出只显示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()

据我所知,几何定义窗口尺寸,img中的坐标定义中心位置。

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

期望的结果是 http://imgur.com/zeDMacO

2 个答案:

答案 0 :(得分:0)

您可以将图片锚定到“西北”地区。并将坐标设置为0,0,或者像furas说的那样#34;将画布扩展到完整窗口"。例如,使用此代码,您应该能够完整显示:

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()

答案 1 :(得分: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()

enter image description here