IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Qcombobox auto completion et recherche


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut Qcombobox auto completion et recherche
    Bonjour,

    Dans mon programme j'ai 2 Combobox, le premier pour une catégorie et le second pour un item contenue dans la catégorie sélectionnée.

    Actuellement je remplie mes combobox avec un dictionnaire de dictionnaire (recipe[category][item]), issue d'un Json et je charge les items d'une catégorie comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		comboBox_category.currentTextChanged.connect(lambda: comboBox_item.clear())
    		comboBox_category.currentTextChanged.connect(lambda: comboBox_item.addItems(recipe[comboBox_category.currentText()].keys()) if comboBox_category.currentText() else None)
    (bien sur je me doute bien que ça va obligatoirement changer si je ne veut pas avoir de KeyError)

    j'aimerais faire un système de recherche dans les combobox, mais clear le second combobox, chercher tous les keys qui commence par se qui est tapé dans le 1er combobox puis les ajouter au second combobox à chaque event currentTextChanged n'est surement pas la solution optimale...

    J'ai re-parcouru la doc Qt, pour l'auto complétion je pense que sa va être avec setCompleter et surtout setValidator pour éviter des recherches du genre "$-('@", mais pour le système de recherche je n'ai pas trouvé comment faire pour "cacher" les items qui ne correspondent pas à la recherche.

    Merci d'avance de votre aide !

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Tu remplace cette horreur comboBox_category.currentTextChanged.connect(lambda: comboBox_item.clear()) par comboBox_category.currentTextChanged.connect(self.on_category_changed)Et tu crées une méthode on_category_changed(self, category) qui avec le nom de la catégorie va mettre à jour la deuxième comboBox.

    Faire des économies de ligne de code n'a aucune utilité en Python.


    Edit: Je réalise après coup, tu n'as pas de self dans ton code, tu utilises Qt comment ?

  3. #3
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut
    il n'y a pas de self ici parce que j'en avait pas l'utilité, de plus je demande des pistes sur comment faire une recherche filtré (et les 2 lignes de codes que j'ai posté était pour le contexte, j'ai même dit d'ailleurs que ça ne conviendrais pas.. donc self, méthode de classe et tout)

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Si tu comptes utilisez Qt hors programmation objet tu fais fausse route mais c'est ton choix.

    Ça ne change rien à ce que j'ai dis, n'utilise pas des lambda uniquement pour économiser des lignes de codes, crée des fonctions qui feront plus proprement le travail.

    Évidemment ça risque de t'obliger à créer un grand nombre de global, mais c'est ton choix.

  5. #5
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut
    J'avais fait se programme quand je débutais Qt et je reviens dessus pour l'améliorer (surtout m'améliorer moi) et j'avoue que le principe de PO à toujours été assez mal présenté dans les tutos pythons à vrai dire c'est en lisant un tuto C++ que j'ai compris se qu'est la programmation objet.

    bref mon code est moche, dégueu, je vais l'adapter, petit à petit mais vus que je veux ajouter des fonctionnalités autant voir comment faire, autant refaire le code 1 seule fois.
    Sinon aucune utilisation de global, c'est juste que ne n'avait pas besoin des combobox ailleurs du coup pas de self, mais t'en fait pas j'utilise bien self... d'ailleurs dans mon code on peut remarquer les paliers de progressions. C'est de moins en moins moche plus les lignes défiles.

    Bref revenons à la question initiale, existe t'il un moyen simple de faire des filtres de recherches pour combobox ? il semblerait que c'est avec les Qcompleter pour auto compléter et pour faire des filtres de recherche...

Discussions similaires

  1. [MySQL] systeme d'auto completion (suggestion de recherche)
    Par sodiq dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/11/2016, 03h40
  2. Auto complete recherche
    Par alf78fr dans le forum jQuery
    Réponses: 2
    Dernier message: 26/04/2015, 20h02
  3. Recherche auto completion
    Par JTABLE dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 24/08/2011, 15h10
  4. auto completion
    Par Blo0d4x3 dans le forum Composants
    Réponses: 14
    Dernier message: 03/06/2009, 17h08
  5. Auto Completion avec un JComboBox
    Par jeffciara dans le forum AWT/Swing
    Réponses: 17
    Dernier message: 19/10/2006, 08h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo