La variable lambda del botón PyQt5 se convierte en booleana

Cuando ejecuto el código de abajo, se muestra lo siguiente. ¿Por qué no es x ‘x’ pero se convierte en un booleano? Esto sucede solo con el primer argumento pasado a la función llamada con lambda.

falso y / home / me / model / some_file

from PyQt5.QtWidgets import QPushButton modelpath = '/home/me/model' filelist = os.listdir(modelpath) x = 'x' y = 'y' def HelloWidget(QWidget): def __init__(self): for file in filelist: button = QPushButton(file) button.clicked.connect(lambda x=x,y=y,file=file: self.myfunction(x,y,file) def myfunction(self,x,y,file): print(x) print(y) print(file) 

El problema se debe a que al hacer clicked pasa un valor booleano que indica si se ha verificado o no. lo apropiado es usar un parámetro para usar ese argumento:

 button.clicked.connect(lambda checked, x=x,y=y,file=file: self.myfunction(x,y,file))