Как передать параметр в функцию, вызываемую по нажатию кнопки
Есть кнопка, при нажатии на которую вызывается функция 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_())
