如何在画布上更新图像?

2024-06-01 12:10:51 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我遇到麻烦的代码的本质:

camelot = Canvas(main, width = 400, height = 300)
camelot.grid(row = 0, column = 0, rowspan = 11, columnspan = 3)
MyImage = PhotoImage(file = "sample1.gif")
camelot.create_image(0, 0, anchor = NW, image = MyImage)

这是在开始的时候。稍后我想在另一个函数中做的是用"sample2.gif"替换"sample1.gif",并且,可能稍后,依次用"sample3.gif"替换它。我卡住了,到目前为止,我一直在尝试的一切都没有奏效。


Tags: 代码imagemaincolumnwidthgifgridrow
2条回答

将图像添加到画布:

self.image_on_canvas = self.canvas.create_image(0, 0, image = ...)

更改图像:

self.canvas.itemconfig(self.image_on_canvas, image = ...)


完整示例:

from Tkinter import *

#----------------------------------------------------------------------

class MainWindow():

    #----------------

    def __init__(self, main):

        # canvas for image
        self.canvas = Canvas(main, width=60, height=60)
        self.canvas.grid(row=0, column=0)

        # images
        self.my_images = []
        self.my_images.append(PhotoImage(file = "ball1.gif"))
        self.my_images.append(PhotoImage(file = "ball2.gif"))
        self.my_images.append(PhotoImage(file = "ball3.gif"))
        self.my_image_number = 0

        # set first image on canvas
        self.image_on_canvas = self.canvas.create_image(0, 0, anchor = NW, image = self.my_images[self.my_image_number])

        # button to change image
        self.button = Button(main, text="Change", command=self.onButton)
        self.button.grid(row=1, column=0)

    #----------------

    def onButton(self):

        # next image
        self.my_image_number += 1

        # return to first image
        if self.my_image_number == len(self.my_images):
            self.my_image_number = 0

        # change image
        self.canvas.itemconfig(self.image_on_canvas, image = self.my_images[self.my_image_number])

#----------------------------------------------------------------------

root = Tk()
MainWindow(root)
root.mainloop()

示例中使用的图像:

ball1.gifball1.gifball2.gifball2.gifball3.gifball3.gif

结果:

enter image description here

    MyImage = PhotoImage(file = "sample1.gif")
    labelorbuttontodisplayit.image = MyImage
    labelorbuttontodisplayit.configure(image=MyImage)

:p应该可以。我只想在标签或按钮上使用这些代码,从来没有将其用作画布,但我想您可以稍微修改一下这段代码。

相关问题 更多 >