Как передать параметр в функцию, вызываемую по нажатию кнопки

Есть кнопка, при нажатии на которую вызывается функция open_spisok. Эта функция считывает данные из определенной папки.

Я хочу задать для этой функции параметр(путь к определенной папке). Таким образом хотел чтобы при нажатии pushButton можно было вызвать функцию с параметром (путь к папке)!

Напимер: self.pushButton.clicked.connect(self.open_spisok("path_2"))

self.pushButton.clicked.connect(self.open_spisok) # нажатие на button вызов функции open_spisok
... 

def open_spisok(self):
        files = os.listdir(path)  # получаем список имен файлов в указанной папке path
        for f in files:
            fullname = os.path.join(path, f)
            print("fullname :" + fullname)
            print(type(fullname))
            self.playlist.addMedia(QMediaContent(QUrl.fromLocalFile(fullname))) 
            self.model.layoutChanged.emit()      

Ответы (1 шт):

Автор решения: S. Nick

Один из способов передать параметр/ы в метод - использовать функцию lambda :

import sys
import os
from PyQt5.Qt import *


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        
        self.lineEdit = QLineEdit()
        self.pushButton = QPushButton('Click me')
        self.pushButton.clicked.connect(lambda ch, le=self.lineEdit: self.open_spisok(le)) 
        
        layout = QVBoxLayout(self)
        layout.addWidget(self.lineEdit)
        layout.addWidget(self.pushButton)
        
    def open_spisok(self, le):
        path = le.text().strip()
        if not path:
            return
            
        files = os.listdir(path)  # получаем список имен файлов в указанной папке path
        for f in files:
            fullname = os.path.join(path, f)
            print("fullname :" + fullname)
            print(type(fullname))
#                self.playlist.addMedia(QMediaContent(QUrl.fromLocalFile(fullname))) 
#                self.model.layoutChanged.emit() 


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindow()                            
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка