【问题标题】:Trying to display a whole image in tkinter试图在 tkinter 中显示整个图像
【发布时间】:2014-06-10 01:25:16
【问题描述】:

好的所以学校项目

这段代码的目标是显示一个 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()

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

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

想要的结果是 http://imgur.com/zeDMacO

【问题讨论】:

    标签: python image tkinter photoimage


    【解决方案1】:

    将您的画布展开到全窗口。

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

    【讨论】:

    • 谢谢老兄!这个项目对时间非常敏感,这是一个巨大的修复。
    【解决方案2】:

    您可以将图像锚定到“西北”并将坐标设置为 0,0,或者像 furas 所说的“将画布扩展到整个窗口”。例如使用此代码,您应该能够获得完整的显示:

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

    【讨论】:

      猜你喜欢
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 2017-08-26
      • 2021-05-11
      • 2016-12-16
      • 1970-01-01
      相关资源
      最近更新 更多