2017-03-17 75 views
1

我有一個Python 3 Tkinter程序,該程序應該呈現特殊文件格式的圖像。Python 3 PhotoImage在不止一次呈現時跨標籤重複

from tkinter import * 

image = [] 

path = Tk() 
display = Toplevel() 

display.wm_title("RCSVvisual") 
display.wm_iconbitmap("favicon.ico") 

path.wm_title("RCSVpath") 
path.wm_iconbitmap("favicon.ico") 

entry1 = Entry(path) 
entry1.pack(side=LEFT) 

photo = PhotoImage(width=240, height=180) 

def refresh(): 
    file_path = entry1.get() 
    with open(file_path, "r") as file: 
     for line in file: 
      thisLine = line.strip() 
      thisArray = thisLine.split(",") 
      image.append(thisArray) 

    for c1 in range(0, len(image)): 
     for c2 in range(0, len(image[c1])): 
      photo.put(image[c1][c2], (c1, c2)) 

button = Button(path, text="Open File", command=refresh) 
button.pack(side=LEFT) 

label = Label(display, image=photo) 
label.pack() 

path.mainloop() 
display.mainloop() 

這是我測試出來的文件:

#F00,#0F0,#00F,#F00 
#0F0,#00F,#F00,#0F0 
#00F,#F00,#0F0,#00F 
#F00,#0F0,#00F,#F00 

但是,看來,如果你運行該程序不止一次,圖像不會取代舊的;而是顯示在原始圖像的右側。我在這裏做錯了什麼?我應該再次打包()目標標籤嗎?

回答

2

您總是會追加到image

如果要創建新圖像,應先清空現有列表。

def refresh(): 
    image = [] 
    file_path = entry1.get() 
    .... 

此外,幾乎總是你只需要一個程序中的主循環。你應該刪除display.mainloop()行。