Seite 1 von 1

Zwei QComboBoxen nicht möglich?

Verfasst: Freitag 21. April 2017, 07:44
von TheWanderer
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_())    

Re: Zwei QComboBoxen nicht möglich?

Verfasst: Freitag 21. April 2017, 10:29
von Sirius3
@TheWanderer: OnChange wird bei jeder Änderung aufgerufen, also das erste mal bei addItem("Eins"), und zu diesem Zeitpunkt ist cbZwei noch nicht definiert.

Re: Zwei QComboBoxen nicht möglich?

Verfasst: Freitag 21. April 2017, 13:49
von TheWanderer
Tatsächlich, das war die Ursache.

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

Danke @Sirius3.