The problem is caused because clicked
passes a Boolean value indicating whether it has been checked or not. the appropriate thing is to use a parameter to use that argument:
button.clicked.connect(lambda checked, x=x,y=y,file=file: self.myfunction(x,y,file))