【问题标题】:Replace Canvas Image in Tkinter在 Tkinter 中替换画布图像
【发布时间】:2018-11-17 19:50:34
【问题描述】:

我有一个程序,我希望当有人单击按钮时,画布图像会发生变化。我的代码如下:

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)

【问题讨论】:

  • 为什么是画布图像而不是标准标签图像?
  • 我明白了,感谢 Novel 提出使用标准标签图像的想法!

标签: python python-3.x tkinter python-imaging-library tkinter-canvas


【解决方案1】:

我没有使用 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)

我的信息来自:How to update the image of a Tkinter Label widget?

还有:https://www.tutorialspoint.com/python/tk_label.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-26
    • 2021-06-28
    • 1970-01-01
    • 2021-05-04
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多