如何动态创建弹出窗口并将其绑定到动态创建的按钮?

时间:2019-07-25 01:07:20

标签: python kivy

我正在尝试使用Kivy和KivyMD创建SmartTiles网格,如何绑定并为每个图块创建动态弹出窗口?

我正在运行Kivy和KivyMD,我试图用一个函数创建PopUp,但是当我将它们绑定到Tiles时,它将仅显示在所有tile上创建的最后一个弹出窗口。 (itemsBase仅返回2个字符串列表)

    def set_items(self):
        titleB, infoB = itemsBase()
        for y in range(1,8):
            pop = self.callbackPopItemBase(str(titleB[y-1]), str(infoB[y-1]))
            self.main_widget.ids.item_base.add_widget(
                SmartTile(source='images/items/%d.png' % y, on_release=lambda x: pop.open()))
    def callbackPopItemBase(self, title, info):
        pop = Popup(
            size_hint = (None, None), size=(dp(200), dp(300)))
        box = BoxLayout(spacing=dp(10), orientation='vertical')
        l1 = LabelPop(text=title, font_style='H6')
        l2 = LabelPop(text=info)
        box.add_widget(l1)
        box.add_widget(l2)
        pop.add_widget(box)
        return pop

我希望能够为每个图块提供不同的弹出窗口,而不必手动创建每个图块。

0 个答案:

没有答案