这可能是一个简单的修复程序,但是我不知道为什么我的按钮图像不会更新。我可以在弹出的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()
我完全更改图像的方法是否错误?也许应该是一个单独的函数,而不是class