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

wxPython Discussion :

Beaucoup de données dans un comboBox !


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut Beaucoup de données dans un comboBox !
    Bonjour à tous,

    Je rame dur là...

    J'ai placé environ 38000 items (liste des villes de France) dans un wx.ComboBox. Cela fonctionne mais... il faut au moins 30 secondes avant que Python charge toutes les données dans le contrôle. Horriblement lent...

    J'avais déjà fait ça sous Access et c'était instantané...

    Verriez-vous une solution pour moi ? Merci pour vos réponses.

  2. #2
    Membre éprouvé
    Inscrit en
    Octobre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 92
    Par défaut
    Bonjour,

    38000 items dans une combo, quel que soit le temps de chargement, ça me semble beaucoup trop pour l'utilisateur. Lorsque le nombre d'items est aussi élevé, un ListCtrl avec ses barres de défilement m'apparaît bien plus indiquée.

    Si le temps d'affichage est aussi important, c'est parce que la totalité de ta liste de 38000 items se charge en mémoire ; ça prend du temps ; et en plus, ça doit te bouffer pas mal de RAM.

    Pour éviter ça, il te faut créer une VirtualList (liste virtuelle) qui est une variante du ListCtrl : ne sont chargés en mémoire que les items affichés dans le contrôle. Une VirtualList est créée en connection avec une base de données - sqlite intégrée à Python2.5 marche très bien.

    A ma connaissance (en clair, à confirmer...), on peut créer une liste virtuelle en utilisant un ListCtrl, mais pas une ComboBox.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    Je te remercie pour ta réponse.

    En effet, je n'ai toujours pas trouvé de solution pour cette comboBox.

    Je l'ai donc transformé en textCtrl autocomplete. Cela fonctionne bien... Et j'ai également fait dans une autre fenêtre une ListCtrl en virtual.

    Dommage pour ma comboBox...

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 32
    Par défaut
    bonjour,

    pourquoi ne pas stocker dans une base tes 38000 items et n'afficher que les items commencant par la première lettre saisi par l'utilisateur dans la combo.
    c'a alège déjà fortement le nombre d'items chargés dans la combo.

    ++

Discussions similaires

  1. transférer des données dans un combobox
    Par kroma23 dans le forum Débuter
    Réponses: 2
    Dernier message: 21/10/2008, 10h11
  2. Introduction des données dans un comboBox
    Par AVNAIM dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/04/2008, 18h00
  3. Recuperer données dans un combobox
    Par aoking dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/04/2007, 11h56
  4. [VB.NET] affichage de données dans un combobox
    Par lou87 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/02/2006, 10h25
  5. Importer la structure d'une base de donnée dans un combobox
    Par hanines dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/09/2005, 22h41

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