J'ai un programme GUI,PyQt connecter bug méthode lorsqu'il est utilisé dans une boucle qui crée des widgets à partir d'une liste
Il auto créer des boutons à partir d'une liste de noms, et se connecter à une fonction imprime son nom.
mais quand je lance ce programme, j'appuie sur tous les boutons,
ils reviennent tous le nom du dernier bouton.
Je me demande pourquoi cette chose arrive. quelqu'un peut-il aider?
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import logging
logging.basicConfig(level=logging.DEBUG,)
class MainWindow(QWidget):
def init(self):
names = ('a','b','c')
lo = QHBoxLayout(self)
for name in names:
button = QPushButton(name,self)
lo.addWidget(button)
self.connect(button,SIGNAL("clicked()"),
lambda :logging.debug(name))
if __name__=="__main__":
app = QApplication(sys.argv)
m = MainWindow();m.init();m.show()
app.exec_()
résultat comme:
python t.py
DEBUG:root:c
DEBUG:root:c
DEBUG:root:c