gpt4 book ai didi

python - 如何更新 Canvas 上的图像?

转载 作者:太空狗 更新时间:2023-10-29 17:55:03 25 4
gpt4 key购买 nike

这是我遇到问题的代码的本质:

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)

这是在开始时运行的。稍后我想在另一个函数中做的是将 "sample1.gif" 替换为 "sample2.gif",并且可能稍后将其依次替换为 “sample3.gif”。我被卡住了,到目前为止我一直在尝试的任何事情都没有奏效。

最佳答案

将图像添加到 Canvas :

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

改变 Canvas 上的图像:

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.gif ball1.gif ball2.gif ball2.gif ball3.gif ball3.gif

结果:

enter image description here

关于python - 如何更新 Canvas 上的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19838972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com