怎么在重新生成img和img2后,同时也重新生成新的lableShowImage1,并且将旧的lableShowImage1从窗口中删除。
时间: 2024-03-17 12:45:50 浏览: 92
twig-img-macro:树枝的响应图像宏的craftcms
可以在choosepic函数中先删除旧的lableShowImage1,然后重新生成新的lableShowImage1并显示新的图片。代码如下:
```
def choosepic():
global lableShowImage1 # 声明lableShowImage1为全局变量,可以在函数中修改它
path_ = tkinter.filedialog.askopenfilename()
path.set(path_)
print(path)
img_open = Image.open(entry.get())
img_array = np.array(img_open)
arr1 = img_array[:]
for x in range(1, arr1.shape[0]):
for y in range(1, arr1.shape[1]):
a = img_array[x, y][0]
b = img_array[x, y][1]
c = img_array[x, y][2]
arr1[x, y] = (a, b, c)
img1 = Image.fromarray(arr1)
img = ImageTk.PhotoImage(img1.resize((380, 330)))
img2 = cv2.resize(arr1, (380, 330), interpolation=cv2.INTER_AREA)
lableShowImage1.destroy() # 删除旧的lableShowImage1
lableShowImage1 = Label(root2, bg='#F0E68C', relief=GROOVE, width=380, height=330)
lableShowImage1.config(image=img) # 设置新的图片
lableShowImage1.image = img
lableShowImage1.place(x=270, y=50)
label4 = Label(text='原始图案', bg='#F0E68C', font=('微软雅黑', 10))
label4.place(x=275, y=38)
os.remove('img.jpg')
cv2.imwrite('img.jpg',img2)
```
在这个修改后的代码中,我们使用`global`关键字将`lableShowImage1`声明为全局变量,这样我们就可以在函数中直接修改它了。在重新生成`img`和`img2`后,我们首先使用`destroy()`方法删除旧的`lableShowImage1`,然后重新生成一个新的`lableShowImage1`,并将其放置到窗口中。最后,我们将新的图片设置为`lableShowImage1`的图片,并更新它的显示。这样就可以解决第二次选择图片时不会显示新选择的图片的问题了。
阅读全文