为了账号安全,请及时绑定邮箱和手机立即绑定

按下按钮时,如何使按钮将其名称传递给函数?

按下按钮时,如何使按钮将其名称传递给函数?

波斯汪 2021-10-26 18:22:32
我有一个基于文件夹中的子文件夹创建按钮的功能。它为每个子文件夹创建一个按钮,并为其指定子文件夹的名称。按下时,我希望按钮打开另一个函数并传递该函数的名称。def _sidepanel(self):    curdir = "/Users/xxx/Desktop/Test/"    layout = BoxLayout(orientation="vertical", pos_hint={"x": 0.0, "y": 0.0}, size_hint=(0.1,1))    for folders in glob(join(curdir, "*")):        name = basename(folders)        btn = Button(text=name, on_press=lambda x: self._printname(name))        layout.add_widget(btn)    return layoutdef _printname(self, name):    print(name)我有 5 个子文件夹,我希望有一个按钮来打印其特定名称,但它们都打印了第一个函数运行的最后一个文件夹的名称。
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

你的最后一个链接解决了我的问题。谢谢 - 刚刚附上了我编辑过的代码。


def _sidepanel(self):

    curdir = "/Users/xxx/Desktop/Test/"

    layout = BoxLayout(orientation="vertical", pos_hint={"x": 0.0, "y": 0.0}, size_hint=(0.1,1))


    layout.add_widget(Button(text="Import\nPhotos"))

    layout.add_widget(Button(text="Create\nReport"))

    layout.add_widget(Button(text="Save?"))

    layout.add_widget(Button(text="Button 4"))


    for folders in glob(join(curdir, "*")):

        name = basename(folders)

        btn = Button(text=name, on_press=lambda n=name:self._showphotos(n))

        layout.add_widget(btn)


    return layout



def _showphotos(self, entry):

    print(entry.text)


查看完整回答
反对 回复 2021-10-26
  • 1 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信