是否有一种方法来发送一个特定的字符串在Kivy功能?



我正在制作一个视频搜索应用程序,我遇到了这个问题,我无法解决它。用户输入关键字,应用程序根据搜索结果返回视频标题。之后,应用程序显示结果:

class SecondWindow(Screen):
def on_enter(self):
try:
self.ids.container.clear_widgets()
except:
pass
for i in range (len(vid_list)):
self.ids.container.add_widget(
OneLineAvatarIconListItem(text=vid_list[i], on_release =lambda v_id:self.send_link(vid_id[i]))
)
def send_link(self, v_id):
print(v_id) #always outputs the last vid_id no matter which one I click

这工作完美,所有的视频得到独特的标题显示。我还设置了它应该根据索引发送videos_id,但它总是发送最后一个,不管我点击哪个。

我该如何解决这个问题?

这是定义使用循环索引的lambda时常见的问题。修复方法是定义另一个等于循环索引的索引。这样的:

for i in range (len(vid_list)):
self.ids.container.add_widget(
OneLineAvatarIconListItem(text=vid_list[i], on_release=lambda v_id, j=i:self.send_link(vid_list[j]))
)

注意j=ivid_list[j]

相关内容

  • 没有找到相关文章

最新更新