Ich habe eine Liste von Zeichenfolgen und möchte für jede dieser Zeichenfolgen einen Menüeintrag erstellen. Wenn der Benutzer auf einen der Einträge klickt, soll immer die gleiche Funktion mit der Zeichenkette als Argument aufgerufen werden. Nach einigem Ausprobieren und Recherchieren bin ich auf so etwas gekommen:
import sys
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.menubar = self.menuBar()
menuitems = ["Item 1","Item 2","Item 3"]
menu = self.menubar.addMenu('&Stuff')
for item in menuitems:
entry = menu.addAction(item)
self.connect(entry,QtCore.SIGNAL('triggered()'), lambda: self.doStuff(item))
menu.addAction(entry)
print "init done"
def doStuff(self, item):
print item
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
Das Problem ist nun, dass jeder der Menüpunkte die gleiche Ausgabe erzeugt: "Punkt 3" anstelle des entsprechenden Punktes. Ich bin für jede Idee dankbar, wie ich das in den Griff bekommen kann. Danke!