Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在多次渲染时,Python3 PhotoImage会在标签上重复_Python_Tkinter - Fatal编程技术网

在多次渲染时,Python3 PhotoImage会在标签上重复

在多次渲染时,Python3 PhotoImage会在标签上重复,python,tkinter,Python,Tkinter,我有一个Python3Tkinter程序,它应该是从一个特殊的文件格式渲染一个图像 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 =

我有一个Python3Tkinter程序,它应该是从一个特殊的文件格式渲染一个图像

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

但是,如果您多次运行该程序,则图像不会替换旧图像;而是显示在原始图像的右侧。我做错什么了吗?是否应该重新将.pack()添加到目标标签?

您总是将其附加到
图像中

若要创建新映像,应首先清空现有列表

def refresh():
    image = []
    file_path = entry1.get()
    ....
而且,几乎总是在程序中只需要一个主循环。您应该删除
display.mainloop()