You could try using a lambda function when binding your button:
new_card.clicked.connect(lambda _, x=card: self.click_card(x))
def click_card(self, card):
print(f"I am {card}")
You need to be carefull with lambda function inside a for loop, that's why I've put x=card
. The argument _
is just a placeholder for the regular argument to the "clicked" signal