Dizelerim var ve bu dizelerin her biri için bir menü girişi oluşturmak istiyorum. Kullanıcı girişlerden birini tıkladığında, her zaman aynı işlev argüman olarak dizeyle çağrılmalıdır. Bazı çalışıyor ve araştırmadan sonra böyle bir şey ile geldi: "Öğe 3" yerine tekabül birini:Dizeler listesinden PyQt menüsü oluştur
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_())
Şimdi problem menü öğelerinin her biri aynı çıktıyı yazdırır olmasıdır. Bu hakkın nasıl elde edilebileceğine dair fikirlere minnettarım. Teşekkürler.
@Alex: +1 !!! Bütün sabah beni rahatsız ediyor! lambda x = x: func (x) FTW :) –
Mükemmel cevap! Ayrıca yeni bağlantı sözdizimi ile çalışır: "entry.triggered.connect (lambda item = item: self.doStuff (item)) – Leistungsabfall