Zwei QComboBoxen nicht möglich?

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
TheWanderer
User
Beiträge: 2
Registriert: Freitag 21. April 2017, 07:35

Ich verzweifle gerade daran, in einem Programm zwei QComboBoxen verwenden zu wollen. Beide Boxen werden sauber angezeigt. In der Auswertung in der Funktion "OncbChange" wird aber die zweite definierte Combobox mit dem Fehler "'MainWindow' object has no attribute 'cbZwei'" abgelehnt.

Hat jemand einen Tipp, was ich falsch mache?

Thomas

Code: Alles auswählen

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout,  QHBoxLayout,  QComboBox

class MainWindow(QWidget):

    def __init__(self):
        super().__init__()
        
        self.setGeometry(100, 100, 300, 100)
        
        self.cbEins = QComboBox()
        self.cbEins.currentIndexChanged.connect(self.OncbChange)
        self.cbEins.addItem("Eins")
        self.cbEins.addItem("Zwei")     
           
        self.cbZwei = QComboBox()
        self.cbZwei.currentIndexChanged.connect(self.OncbChange)
        self.cbZwei.addItem("A")
        self.cbZwei.addItem("B")
        self.cbZwei.addItem("C")
        
        sizer_v = QVBoxLayout()
        sizer_h = QHBoxLayout()
        
        sizer_h.addWidget(self.cbEins)
        sizer_h.addWidget(self.cbZwei)
        sizer_v.addLayout(sizer_h)

        self.setLayout(sizer_v)
        self.show()         
        
    def OncbChange(self, event):
        print(self.cbEins.currentText())
        print(self.cbZwei.currentText())
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = MainWindow()
    sys.exit(app.exec_())    
Zuletzt geändert von Anonymous am Freitag 21. April 2017, 12:30, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@TheWanderer: OnChange wird bei jeder Änderung aufgerufen, also das erste mal bei addItem("Eins"), und zu diesem Zeitpunkt ist cbZwei noch nicht definiert.
TheWanderer
User
Beiträge: 2
Registriert: Freitag 21. April 2017, 07:35

Tatsächlich, das war die Ursache.

self.cbEins.currentIndexChanged.connect(self.OncbChange)) hinter die Definition von cbZweilöst das Problem.

Danke @Sirius3.
Antworten