2009-04-10 6 views
1

Ich habe ein GUI-Programm,PyQt verbindet Bug-Methode, wenn in einer for-Schleife, welche Widgets aus einer Liste erstellt

Es Auto erstellen Schaltflächen aus einer Namensliste, und eine Verbindung zu einer Funktion ihren Namen druckt.

aber wenn ich dieses Programm ausführen, drücke ich alle Tasten,

sie alle zurückkehren den Namen des letzten Taste.

Ich frage mich, warum dieses Ding passiert. Kann jemand helfen?

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_() 

Ergebnis wie:

python t.py 
DEBUG:root:c 
DEBUG:root:c 
DEBUG:root:c 

Antwort

Verwandte Themen