Заменить изображение холста в Tkinter - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть программа, и я хочу, чтобы, когда кто-то нажимал кнопку, изображение холста изменялось. Мой код ниже:

from PIL import ImageTk,Image, ImageFont, ImageDraw
import tkinter
import textwrap
from tkinter import Frame, Canvas, Text, INSERT, END


root = tkinter.Tk()
root.geometry("296x337")
root.resizable(False, False)

im=Image.open("red.jpg")  
photo=ImageTk.PhotoImage(im)  
cv = tkinter.Canvas()  
cv.pack(side='top', fill='both', expand='yes')  
cv.create_image(0, 0, image=photo, anchor='nw')

def changepic():
    ###place where I want to change the Canvas Image
    print("change color")#I added this because python wouldn't let me run thee function without something.


a2=tkinter.Button(root,text='change color',bd=0, command=changepic)
a2.config(highlightbackground='black')
a2.place(x=135, y=70)

1 Ответ

0 голосов
/ 18 ноября 2018

Вместо использования Canvas я заменил код так, чтобы он печатал изображение, используя tkinter.Label:

from PIL import ImageTk,Image, ImageFont, ImageDraw
import tkinter
import textwrap
from tkinter import Frame, Canvas, Text, INSERT, END


root = tkinter.Tk()
root.geometry("296x337")
root.resizable(False, False)

img = ImageTk.PhotoImage(Image.open("red.jpg"))
panel = tkinter.Label(root, image=img)
panel.pack(side="bottom", fill="both", expand="yes")

def changepic(imagename):
    img2 = ImageTk.PhotoImage(Image.open(imagename))
    panel.configure(image=img2)
    panel.image = img2


a2=tkinter.Button(root,text='change color',bd=0, command=changepic("blue.jpg")
a2.config(highlightbackground='black')
a2.place(x=135, y=70)

Я получил информацию от: Как обновить изображение метки Tkinterвиджет?

И: https://www.tutorialspoint.com/python/tk_label.htm

...