【问题标题】:How to make an image to appear on tkinter.Canvas? [duplicate]如何使图像出现在 tkinter.Canvas 上? [复制]
【发布时间】:2019-01-29 20:53:20
【问题描述】:

我有一个“游戏”类,它必须创建一个带有图像的窗口,这是我尝试过的代码,但图像没有出现。那里的目录存在 并且没有产生错误

from tkinter import *
class Game():
    def __init__(self):
        self.tk = Tk()
        self.tk.title('          ')
        self.tk.resizable(0, 0)
        self.tk.wm_attributes("-topmost", 1)
        self.canvas = Canvas(self.tk, width=800, height=600)
        self.canvas.pack()
        self.tk.update()
        self.bg = \
        PhotoImage('C:\\Users\\iv4um\\ninjafight\\hj\\officelight.gif')
        self.bgimage = self.canvas.create_image(0, 0, image=self.bg, \
        anchor='nw')
        self.tk.update()

我希望图像出现在屏幕上,但我得到的只是空白屏幕,没有图像。图片为 800 * 600 像素,为 .gif。

【问题讨论】:

  • 你检查过Tkinter GIF not display吗?接受的答案中的两个链接都应该有所帮助,具体取决于您的问题。
  • 试试self.bg = PhotoImage(file='C:\\Users\\iv4um\\ninjafight\\hj\\officelight.gif')
  • 这比答案更有用
  • @AndriiChumakov 谢谢。觉得官方回答不够复杂。

标签: python tkinter tkinter-canvas


【解决方案1】:

尝试使用枕头模块(PIL,python 图像库),您应该使用它来处理 gif 作为图像...

from PIL import Image, ImageTk

【讨论】:

    【解决方案2】:

    如果你想使用 Tkinter 模块,你可以看Play an animated gif in python with tkinter。虽然,答案使用 Label 来显示 gif。

    我建议你可以试试pyglet 模块,它更容易。

    import pyglet
    
    # giphy directory
    giphy_file = "giphy.gif"
    
    # make an animation object
    animation = pyglet.resource.animation(giphy_file)
    
    sprite = pyglet.sprite.Sprite(animation)
    
    # create a window
    win = pyglet.window.Window(width=sprite.width, height=sprite.height)
    
    # background color = r, g, b, alpha of the window
    green = 0, 1, 0, 1
    pyglet.gl.glClearColor(*green)
    
    @win.event
    def on_draw():
         win.clear()
         sprite.draw()
    pyglet.app.run()
    

    【讨论】:

    • 问题是关于 tkinter.Canvas 而不是关于 tkinter.Label 或 pyglet。
    • @AndriiChumakov 当然是的。我建议别的。我无法在 Canvas 方面为您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 2021-10-30
    • 2017-08-06
    • 2015-09-03
    • 1970-01-01
    相关资源
    最近更新 更多