私は一連の壁紙画像を表示し、ユーザーがアプリの背景として1つを選択できるようにするアプリケーションに取り組んでいます。
アプリケーションはディレクトリを読み取り、ディレクトリ内のすべての.JPG画像を表示します。したがって、ユーザーが不確定な長さのオプションのリストから任意のオプションをクリックできるようにする必要があります。
問題は、リスト内の壁紙をクリックすると、リスト内の最後の壁紙に変更するオプションが渡されるだけです(つまり、ループ変数が繰り返され、呼び出されたメソッドでループ変数の値をキャプチャする必要があります)タグを割り当てる反復で)。
コードの関連するチャンクは次のとおりです。
for i in range(0,(howManyWalls-1)):
#Update position
if i % 3 == 0:
startX=x0+10
startY=startY+160
else:
startX=startX+160
self.options.append(Image.open("../includes/wallpaper/wall"+str(i+1)+".jpg"))
self.options[i].thumbnail((150,150),Image.ANTIALIAS)
self.optionThumbs.append(ImageTk.PhotoImage(self.options[i]))
self.optionThumbsDisp.append(canvas.create_image(startX,startY,anchor=NW, image=self.optionThumbs[i]))
canvas.tag_bind(self.optionThumbsDisp[i],"<Button-1>", lambda x: self.changeWallpaper(canvas,w,h,(i+1)))