Я новичок в Kivy и Python, и я пытаюсь разработать приложение, основанное на интерфейсе Instagram Layout.Как функция лямбда-доступа к моей петле или петле с использованием киви?
Сначала я определил класс ImageButton, который заставит меня создать изображение кнопки:
class ImageButton(ButtonBehavior, Image):
pass
Тогда я использовал этот класс для создания кнопки изображения в сетке. вот мой код:
class AllImage(BoxLayout):
# screen_manager = ObjectProperty()
def __init__(self, **kwargs):
BoxLayout.__init__(self, **kwargs)
self.orientation='vertical'
self.sizable_from = 'top'
splitter = Splitter(sizable_from = 'bottom')
root = ScrollView()
gridtest = GridLayout(cols=2, spacing=10)
layout = GridLayout(cols=4, spacing=10)
self.add_widget(splitter)
super(AllImage, self).__init__(**kwargs)
for im in IMAGES_NAMES:
if IMAGES_NAMES != None :
btn = ImageButton(source = im+'.png')
btn.bind(on_press= lambda a:gridtest.add_widget(ImageButton(source = im+'.png')))
layout.add_widget(btn)
splitter.add_widget(gridtest)
root.add_widget(layout)
self.add_widget(root)
Моя текущая цель состоит в том, чтобы добавить ImageButton в сетке layout
к сетке gridtest
, когда я нажимаю на ImageButton.
Проблема, с которой я столкнулся, теперь btn.bind(on_press= lambda a:gridtest.add_widget(ImageButton(source = im+'.png')))
Когда я нажимаю ImageButton, у меня нет изображения, которое я нажал во второй сетке, но последнее изображение в 1-й сетке.
Я думаю, проблема связана с лямбдой, потому что у нее нет доступа к моей петле, и я не могу сделать цикл на ней. Так в чем же решение?
Благодаря она работает: D –