2017-10-15 3 views
0

Ich habe eine Liste von Namen und aus dieser Liste möchte ich eine menubar meiner QMainWindow zu besetzen. Im Folgenden ein Versuch von Code:Hinzufügen von Elementen zu einer Menüleiste mit einer for-Schleife - Pyqt5

list_name = ['Miller', 'Johnson', 'Robert'] 
self.menuName = self.menuBar().addMenu('Name') 
for i in range(0,3): 
    list_name[i]+'_action' = QtWidgets.QAction(list_name[i], self) 
    self.menuName.addAction(list_name[i]) 

Hier ist der Fehler:

enter image description here

Danke

Antwort

1

Sie keine Variable in einen String zuweisen können, können Sie das Gegenteil tun müssen, außer es ist nicht notwendig, dass die Variable einen anderen Namen hat.

Um es lesbarer zu machen, können Sie auch durch die Liste iterieren, anstatt über Zahlen zu iterieren.

list_name = ['Miller', 'Johnson', 'Robert'] 
self.menuName = self.menuBar().addMenu('Name') 
for name in list_name: 
    action = QtWidgets.QAction(name, self) 
    self.menuName.addAction(action) 
+0

Super! Nur eine kurze Frage. Wie kann ich die Menüleiste Elemente mit dem gleichen Def verbinden? Sollte diese Art von Code in die Schleife enthalten: 'self.name_action.triggered.connect (self.def_name)'? Danke –

+1

Wenn Sie alle QAction mit der gleichen Funktion verbinden möchten, müssen Sie nur: 'action.triggered.connect (self.def_name)'. Wenn Sie in der Funktion filtern wollen, müssen Sie nur 'self.sender()' verwenden. Bitte vergiss nicht, meine Antwort als korrekt zu markieren. – eyllanesc

+0

Noch eine Sache ... Wie kann ich den Namen des ausgewählten Elements als Variable übergeben? Ich tat dies "action.trigger.connect (lambda item = name: self.def_name (item))", aber das gibt 'False' zurück, wenn ich die Variable drucke. Danke –

Verwandte Themen