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

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


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


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 个子文件夹,我希望有一个按钮来打印其特定名称,但它们都打印了第一个函数运行的最后一个文件夹的名称。


波斯汪
浏览 129回答 1
1回答

阿晨1998

你的最后一个链接解决了我的问题。谢谢 - 刚刚附上了我编辑过的代码。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 layoutdef _showphotos(self, entry):    print(entry.text)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python