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

Tkinter Python Discussion :

Bugs d'affichage des combobox Tix


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Par défaut Bugs d'affichage des combobox Tix
    Bonjour,

    J'ai un problème avec l'affichage de combobox Tix.
    Quand je sélectionne un élément de la liste, 1 fois sur 2 la liste d'a pas la bonne largeur et on ne lit pas tout le texte. Je mets des images pour que ce soit plus parlant...




    En plus, question subsidiaire, il y a du gris autour de la combobox. Vous savez à quoi ça peut-être du?
    Edit: Je viens de comprendre que cette zone correspond à la zone d'un label qu'on peut attacher au combobox. Par contre, je n'arrive pas à la supprimer, même avec un labelside=none... Si quelqu'un à une idée?

    Voilà le code qui gère mes combobox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    varComboMachines = Tix.StringVar()
    comboMachines = Tix.ComboBox(frameEnregistrements, editable=1, dropdown=1, variable=varComboMachines, listwidth=25)
    comboMachines.entry.config(width=8, state='readonly')
    .
    .
    .
    for indiceMachine in range(len(listeMachines)):
    	comboMachines.insert(indiceMachine, listeMachines[indiceMachine])
    .
    .
    .
    comboMachines.grid(row=6, column=2, sticky='W', columnspan=4)
    Merci d'avance!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Par défaut
    Personne n'a une idée?

  3. #3
    Membre chevronné
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Bonjour, c'est une belle interface.

    Aurai un tu un petit prototype qui reproduit le bug de la combobox ?
    se serait plus simple pour nous.

    Je pense à ceci pour la largeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    comboMachines.subwidget( "slistbox" ).config( width = 9 )
    mais je ne promet rien. Les widget Tix son des assemblages de widgets Tkinter

    Edit: Je viens de comprendre que cette zone correspond à la zone d'un label qu'on peut attacher au combobox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Help on class ComboBox in module Tix:
     
    class ComboBox(TixWidget)
     |  ComboBox - an Entry field with a dropdown menu. The user can select a
     |  choice by either typing in the entry subwdget or selecting from the
     |  listbox subwidget.
     |  
     |  Subwidget       Class
     |  ---------       -----
     |  entry       Entry
     |  arrow       Button
     |  slistbox    ScrolledListBox
     |  tick        Button
     |  cross       Button : present if created with the fancy option
     |
    Je ne voie pas de Label parmi les sous-widgets mais peux importe je pense que la solution et là. configure le bon subwiget
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  4. #4
    Membre chevronné
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Re-bonjour

    désolé mais l'aide intégré n'est pas compléte.

    Voici pour ton problème de couleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    from Tix import *
     
    root = Tk()
     
    varComboMachines = StringVar()
    frameEnregistrements = Frame( bg = "red" )
    comboMachines = ComboBox(frameEnregistrements, editable=1, dropdown=1, variable=varComboMachines, listwidth=25)
    comboMachines.entry.config(width=8, state='readonly')
     
     
    listeMachines = [ "toto", "titi", "tata" ]
    for indiceMachine, machine in enumerate( listeMachines ):
    	comboMachines.insert( indiceMachine, machine )
     
    comboMachines.subwidget("label" ).destroy() # Un config( bg = "red" ) marche aussi
    comboMachines.subwidget("frame").config( bg = "red" ) # pour le gris entre la flèche 
                                                                                         # et le champ de saisie.
     
     
    frameEnregistrements.grid()
    Label( frameEnregistrements, text = "pour etaler ma frame rzeo zetzretj z").grid()
    comboMachines.grid()
    root.mainloop()
    pour remplir ta combobox tu as la fonction enumerate qui est pas mal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    >>> lst = ["toto", "tata", "titi"]
    >>> for num, nom in enumerate( lst ) :
    ...     print num, nom
    ... 
    0 toto
    1 tata
    2 titi
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Par défaut
    Super, c'est exactement cce qu'il me fallait!
    Merci beaucoup vincent.mbg

    Pour l'histoire du label, je l'avais coloré de la couleur de fond de la frame pour pas le voir, mais le supprimer (ce que je n'avais pas réussi à faire) c'est encore mieux

    Et pour la largeur de la combobox, ta solution marche nickel chrome

    Pour la fonction enumerate, va falloir que j'essaye!

    En tout cas, merci encore!!!!!

    A+

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Par défaut
    Citation Envoyé par vincent.mbg Voir le message
    Re-bonjour

    désolé mais l'aide intégré n'est pas compléte.
    Une dernière question. Tu parlais de code intégré... Quelle commande faut-il taper pour l'avoir?

    Merci d'avance

  7. #7
    Membre chevronné
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Tu as la fonction help intégré dans Python

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import Tix
    help( Tix.ComboBox)
    La fonction dir() est très utile aussi pour voir les attributs d'un objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    >>> a = [1,2]
    >>> dir(a)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
    >>>
    lorsque tu écrit une fonction, une classe ou un module, toutes les chaines de documentation sont renvoyées par help()


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    >>> def foo( a ) :
    ...         """
    ...          ma super doc :-)
    ...          a : int
    ...          """
    ...          return a + 1
    ... 
    >>> help( foo )

    foo(a)
    ma super doc :-)
    a : int
    (END)
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bug d'affichage des "<"
    Par piploum dans le forum Scilab
    Réponses: 3
    Dernier message: 03/01/2012, 16h40
  2. [WD-2010] Bug d'affichage des polices adobe
    Par Themushi dans le forum Word
    Réponses: 3
    Dernier message: 29/06/2010, 00h59
  3. [PHP 5.3] Bug d'affichage des Exceptions
    Par mistertbo dans le forum Langage
    Réponses: 2
    Dernier message: 18/09/2009, 21h57
  4. Bug d'affichage des bordures de fieldset sous IE
    Par sliderman dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 11/07/2008, 20h30

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