web-dev-qa-db-fra.com

PyQt: Comment définir Combobox sur Item en connaissant le texte de Item (un titre)

Est-il possible de définir Combobox sur un élément en connaissant la valeur textuelle d'un élément. J'essaie d'éviter de parcourir for i in range(myCombobox.count()) juste pour trouver l'index d'un élément afin qu'il puisse être utilisé pour définir une zone de liste déroulante à l'index de cet élément.

19
alphanumeric

Oui, il y a QComboBox.findText , qui renverra l'index de l'élément correspondant (ou -1, s'il n'y en a pas). Par défaut, la recherche effectue une correspondance exacte et sensible à la casse, mais vous pouvez modifier le comportement en passant --- match-flags comme deuxième argument. Par exemple, pour faire une correspondance de casse - insensible :

    index = combo.findText(text, QtCore.Qt.MatchFixedString)
    if index >= 0:
         combo.setCurrentIndex(index)

Il existe également une méthode findData équivalente qui correspond aux données de l'élément.

38
ekhumoro