选择后按钮图像将不会更新

时间:2020-07-01 16:23:20

标签: python image user-interface tkinter

这可能是一个简单的修复程序,但是我不知道为什么我的按钮图像不会更新。我可以在弹出的Windows资源管理器中选择一个图像,但是我没有从PyCharm收到任何错误消息。

from tkinter import simpledialog,filedialog,colorchooser,messagebox,Frame,Button
from PIL import ImageTk, Image

root = tk.Tk()

load1 = Image.open("example.jpg")
root.render1 = ImageTk.PhotoImage(load1)

class makeRow:
    def __init__(self,top, img, r):
        c1 = "#a9d08e"
        c2 = "#8dd1bf"
        self.msg = "hello "+str(r)
        self.e1 = tk.Button(top, image=root.render1, relief="raised", bg="light gray", command = self.change_img)
        self.e1.grid(row=r, column=0, sticky="news")
        self.e2 = tk.Entry(top, bg=c1).grid(row=r, column=1, sticky="news")
        self.e3 = tk.Entry(top, bg=c1).grid(row=r, column=2, sticky="news")
        self.e4 = tk.Entry(top, bg=c1).grid(row=r, column=3, sticky="news")
        self.e5 = tk.Entry(top, bg=c2).grid(row=r, column=4, sticky="news")
        self.e6 = tk.Entry(top, bg=c2).grid(row=r, column=5, sticky="news")
        self.e7 = tk.Text(top, bg="white", wrap="word", font=("arial", 15), width=50, height=10).grid(row=r, column=6, sticky="news")
    def change_img(self):
        ret = filedialog.askopenfilename()
        ld = Image.open(ret)
        ren = ImageTk.PhotoImage(ld)
        self.e1.image = ren

#  >>>>  I suspect I'm missing some code right about here  <<<<<
#  >>>>>>                                <<<<<<<<<<<<<<<<<<<<<<<


canv_1 = tk.Canvas(root, bg="gray")
canv_1.grid_rowconfigure(0, weight=1)
canv_1.grid_columnconfigure((0, 1, 2, 3, 4, 5, 7), weight=1)
canv_1.grid_columnconfigure(6, weight=2)

canv_1.grid(row=0, column=0, sticky="news")
canv_1.grid(row=1, column=0, sticky="news")

labels = ["Image", "Chapter #", "Chapter Title", "Step", "Slide", "Sequence Step", "Instructions"]
root.label_wid = []
for i in range(len(labels)):
    root.label_wid.append(tk.Label(canv_1, font=("arial", 15, "bold"), relief="raised", text=labels[i]).grid(row=0, column=i,
                                                                                                        sticky="we"))

root.slides = []

for i in range(10):
    root.slides.append(i)
    if i > 0:
        root.slides[i] = makeRow(canv_1, "example.jpg", i)

load2 = Image.open("scroll-up.png")
root.render2 = ImageTk.PhotoImage(load2)
load3 = Image.open("scroll-down.png")
root.render3 = ImageTk.PhotoImage(load3)
scroll_up = tk.Button(canv_1, image=root.render2).grid(row=1, column=7, rowspan=2)  # , sticky="n")
scroll_up = tk.Button(canv_1, image=root.render3).grid(row=3, column=7, rowspan=2)  # , sticky="s")

root.mainloop()

This is the current GUI that seems to work fine

我完全更改图像的方法是否错误?也许应该是一个单独的函数,而不是class

内部

0 个答案:

没有答案