Как очистить холст Tkinter при нажатии кнопки - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь создать кнопку, которая очистит холст, а затем поместит изображение на холст, выбранный в диалоговом окне файла Tkinter.Я использую canvas.delete("all") метод , доступный здесь , чтобы попытаться очистить холст перед выбором нового изображения, но новое изображение появляется над существующим изображением, а не заменяет его.

from Tkinter import *
import Tkinter, Tkconstants, tkFileDialog
from PIL import Image, ImageTk

root = Tk()

canvas1 = Canvas(root, width=500, height=500)
canvas1.pack()

class widgets:

    def __init__(self, parent):
        self.myParent = parent
        self.myContainer1 = Frame(parent)
        self.myContainer1.pack()

        self.button1 = Button(self.myContainer1, command=self.button1click)
        self.button1.config(text="Select Image")
        self.button1.pack(side=TOP)

    def button1click(self):
        canvas1.delete("all")
        path = tkFileDialog.askopenfilename(filetypes=[("Image File", '.png')])
        im = Image.open(path)
        tkimage = ImageTk.PhotoImage(im)
        imglabel = Label(canvas1, image=tkimage)
        imglabel.image = tkimage
        imglabel.pack()

widgets = widgets(root)
root.mainloop()
...