python - Python整数在循环中表现得很奇怪
问题描述
循环中的整数表现得很奇怪:以后每次调用整数时,整数总是循环中的最后一个。
for b in info:
if y > config["height"] - 160:
if g:
f = i
self.f = f
g = False
y -= 160 * f
x += 200
self.x = x
self.button[i] = canvas.create_rectangle(50 + x, 1 + y, 100 + x, 51 + y, outline="white",
fill="white")
self.frame[i] = canvas.create_rectangle(0 + x, 0 + y, 190 + x, 140 + y, outline="#cfcfcf",
fill="white")
self.item[i] = canvas.create_image(100 + x, 26 + y, image=icons["store-pack"][i])
self.name[i] = canvas.create_text(100 + x, 75 + y, text=b["name"], fill="#7f7f7f", anchor=CENTER)
self.c_icon[i] = canvas.create_image(40 + x, 117 + y, image=icons["store-coin"], anchor=W)
self.coins[i] = canvas.create_text(95 + x, 117 + y, text=b["coins"], fill="#7f7f7f", font=("helvetica", 18), anchor=CENTER)
self.items[i] = i
canvas.tag_bind(self.button[i], "<Motion>", lambda event: self.__on_motion(canvas, deepcopy(i)))
canvas.tag_bind(self.frame[i], "<Motion>", lambda event: self.__on_motion(canvas, deepcopy(i)))
canvas.tag_bind(self.item[i], "<Motion>", lambda event: self.__on_motion(canvas, deepcopy(i)))
canvas.tag_bind(self.name[i], "<Motion>", lambda event: self.__on_motion(canvas, deepcopy(i)))
canvas.tag_bind(self.c_icon[i], "<Motion>", lambda event: self.__on_motion(canvas, deepcopy(i)))
canvas.tag_bind(self.coins[i], "<Motion>", lambda event: self.__on_motion(canvas, deepcopy(i)))
canvas.tag_bind(self.button[i], "<ButtonPress-1>", lambda event: self.buy_selected(config, modes, root, stats, canvas))
canvas.tag_bind(self.frame[i], "<ButtonPress-1>", lambda event: self.buy_selected(config, modes, root, stats, canvas))
canvas.tag_bind(self.item[i], "<ButtonPress-1>", lambda event: self.buy_selected(config, modes, root, stats, canvas))
canvas.tag_bind(self.name[i], "<ButtonPress-1>", lambda event: self.buy_selected(config, modes, root, stats, canvas))
canvas.tag_bind(self.c_icon[i], "<ButtonPress-1>", lambda event: self.buy_selected(config, modes, root, stats, canvas))
canvas.tag_bind(self.coins[i], "<ButtonPress-1>", lambda event: self.buy_selected(config, modes, root, stats, canvas))
y += 160
i += 1
如果调用了绑定的 __on_motion,它说 i 始终是 23。但是我将光标移动到具有另一个索引的另一个对象上。(对不起我的英语不好)
解决方案
我修复了它,将每个替换lambda event: ...
为lambda event, i=i: ...
推荐阅读
- java - 如何使用 vert.x AzureADAuth?
- intellij-idea - Intellij Idea编译输出包括非类文件?
- ios - 检测用户是否在应用商店对应用进行评分
- ruby-on-rails - 如何在 Rails 中加载这个 yml 文件?
- xamarin - 使用 AVPlayerViewController 播放视频时,Apple tv 遥控器上的播放/暂停按钮不起作用
- c++builder-6 - C++ Builder DrawGrid 用法
- javascript - 为什么我的按钮不再调用该函数?
- java - NetBeans 永远“运行...”并且不会编译
- html - 主页的图片链接不可点击
- sql - 如何订购商品和子商品?