Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / Pmw : ComboBox et validation

Pmw : ComboBox et validation

Remonter à Forum général Python
  • Pmw : ComboBox et validation

    Envoyé par LaurentLM le 24 Février 2009 à 13:04
    Bonjour à tous,

    Le widget ComboBox de Pmw est composé d'un entryfield et d'une scrolled listbox.
    Est-il possible d'appliquer une validation sur cet entryfield ?

    Conseils et exemples bienvenus.
    Merci
    • Re: Pmw : ComboBox et validation

      Envoyé par LaurentLM le 26 Février 2009 à 17:13
      Eurêka,

      En extrapolant un exemple du widget Pmw.Counter, j'ai tenté ceci :

      dropdown = Pmw.ComboBox(parent,
      label_text = 'Dropdown ComboBox:',
      labelpos = 'nw',
      selectioncommand = self.changeColour,
      scrolledlist_items = colours,
      entryfield_validate = {'validator' : 'date', 'format' : 'dmy'}
      )

      ... et c'est (essai ;)) concluant

      Cordialement,
      Laurent
    • Re: Pmw : ComboBox et validation

      Envoyé par glickind le 26 Février 2009 à 00:46
      voici un exemple inspiré du chapitre 14.4.1. « Combo Box » de
      'Apprendre à programmer avec Python' de Gérard Swinnen
      http://www.cifen.ulg.ac.be/inforef/swi/python.htm
      http://python.developpez.com/cours/TutoSwinnen


      #!/usr/bin/python
      # -*- coding: latin-1 -*-

      from Tkinter import *
      import Pmw

      def changeCoul(col):
      if col in couleurs:
      fen.configure(background = col)
      else:
      lab.configure(text = 'Erreur')
      combo.setlist(couleurs) # permet d'effacer les saisies erronées de la liste

      def changeLabel():
      lab.configure(text = combo.get())

      couleurs = ('navy', 'royal blue', 'steelblue1', 'cadet blue',
      'lawn green', 'forest green', 'dark red',
      'grey80','grey60', 'grey40', 'grey20')

      fen = Pmw.initialise()
      bou = Button(fen, text ="Choix", command =changeLabel)
      bou.grid(row =1, column =0, padx =8, pady =6)
      lab = Label(fen, text ='néant', bg ='ivory')
      lab.grid(row =1, column =1, padx =8)

      combo = Pmw.ComboBox(fen, labelpos = NW,
      label_text = 'Choisissez la couleur :',
      scrolledlist_items = couleurs,
      listheight = 150,
      selectioncommand = changeCoul)
      combo.grid(row =2, columnspan =2, padx =10, pady =10)

      fen.mainloop()

      Lors de la création d'une ComboBox, on indique grâce au paramètre 'selectioncommand' le nom de la fonction qui va être appelée lors d'une saisie ou d'une sélection dans la combo
      Ainsi changeCoul vérifie que la couleur saisie est dans la liste des couleurs autorisées
      • Re: Pmw : ComboBox et validation

        Envoyé par LaurentLM le 26 Février 2009 à 13:53
        Bonjour,

        Merci glickind pour cette réponse.
        La solution par 'selectcommand' m'ouvre des perspectives...
        La fonction est appelée sur une sélection ou sur l'action de la touche 'Entrée' (mais pas à la frappe de chaque caractère).

        Je constate cependant que ma question est maladroitement posée : je reformule.

        Est-il possible d'appliquer un 'validator' à l'entryfield contenu dans la combobox ?

        Le beurre et l'argent du beurre : c'est autant le comportement du widget (bg en rouge, "blocage de la saisie, etc) que la fonctionnalité de validation que je recherche.

        Cordialement,
        Laurent
Rendu par Ploneboard