18

これは私が問題を抱えているコードの本質です:

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"ます。私は立ち往生しており、これまでに試したことは何もありません。

4

2 に答える 2

36

キャンバスに画像を追加する:

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

結果:

ここに画像の説明を入力

于 2013-11-07T17:29:36.990 に答える
2
    MyImage = PhotoImage(file = "sample1.gif")
    labelorbuttontodisplayit.image = MyImage
    labelorbuttontodisplayit.configure(image=MyImage)

:P それを行う必要があります。そのコードをキャンバスとしてではなく、ラベルまたはボタンでのみ使用しようとしましたが、そのコードを少し調整できると思います。

于 2013-11-07T15:02:04.787 に答える