繁体   English   中英

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

[英]How do I make a button pass its name to a function, when it is pressed?

我有一个功能,可以基于文件夹中的子文件夹创建按钮。 它为每个子文件夹创建一个按钮,并为其指定子文件夹的名称。

当按下时,我希望按钮打开另一个功能并传递该功能的名称。

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 layout

def _printname(self, name):
    print(name)

我有5个子文件夹,我希望按钮可以打印其特定名称,但是相反,它们都将打印由第一个功能运行的最后一个文件夹的名称。

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

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM