该程序应生成多个图像,同时在y和x截距上绘制特定点。但出于某种原因,它只会弹出两张图像。第一个图像是列表中最后一个y和x中间字符串。第二个图像是.after之后的代码。它应该获取所有列表值并将其转换为具有正确y和x inter的图像。所以应该有4张图片。请自己运行代码并帮助我。如果你能弄明白的话,请给我看一下更新后的代码
from tkinter import *
from PIL import ImageTk, Image
def ShowAnotherWin(i):
win = Toplevel()
image = ImageTk.PhotoImage(Image.open('C:/Users/capture.PNG'))
win.geometry('420x544+' + i + '+' + i)
canvas =Canvas(win, width=420, height=560)
canvas.create_image(0, 0, image= image, anchor=NW)
canvas.pack()
win.overrideredirect(1)
win.mainloop()
YourImageList = ['0', '50', '100', '150']
root = Tk()
for i in YourImageList:
root.after(0, lambda:ShowAnotherWin(i))
image = ImageTk.PhotoImage(Image.open('C:/Users/capture.PNG'))
root.geometry('420x560+1000+0')
canvas = Canvas(root, width=420, height=560)
canvas.create_image(0, 0, image= image, anchor=NW)
canvas.pack()
root.overrideredirect(1)
root.mainloop()
```
我认为你在这里遇到的问题是由late binding引起的
当闭包变量
i
被传递到ShowAnotherWin()
时,for循环已经完成,并且i
的最终值为'150'
。这是因为在调用函数时会查找闭包变量要解决此问题,可以使用lambda闭包的默认参数,该参数将立即绑定:
相关问题 更多 >
编程相关推荐