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 :

Afficher, affecter une date "Null" dans un QDateEdit


Sujet :

PyQt Python

  1. #1
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Par défaut Afficher, affecter une date "Null" dans un QDateEdit
    Bonjour à tous,

    Comment faire pour afficher une date "Null" dans un QDateEdit ?
    Comment faire pour affecter une date "Null" dans un QDateEdit ?

    Il y a apparemment un Bug dans Qt (j'utilise Pyside mais je pense que cela doit être pareil ...)
    https://bugreports.qt-project.org/browse/qtbug-277
    Je pense qu'il faudrait peut-être créer un widget personnalisé à partir de QDateEdit ...

    Quelqu'un a-t-il déjà été confronté à ce problème ?
    Merci pour vos pistes.
    Cordialement,

  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,

    Ce n'est pas possible, manifestement à cause du validator qui ne laisse pas passer une date non valide.

    Par contre, il y a moyen de bricoler.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            ...
            self.date = QtGui.QDateEdit(self)
            ...
     
        def clear_date(self):
            l = self.date.findChild(QtGui.QLineEdit)
            l.setText("")
    Je l'ai testé, il faut que ce soit appliqué après affichage de la fenêtre, donc dans une fonction appelée après ui.show()

  3. #3
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Par défaut
    Salut VinsS,

    Merci pour ton coup de pouce qui m'ouvre quelques horizons (je ne connaissais pas ...). J'ai créé un classe héritée de QDateEdit pour essayer d'intégrer cette fonctionnalité. J'ai ajouté une propriété "valeur" dans laquelle je stocke la date (qu'elle soit nulle ou non). Je teste alors si "valeur" est None alors je modifie l'affichage avec ta solution. Il me reste à trouver comment rendre "nulle" une date existante. En fin de compte je voudrais rendre la date "nulle" en faisant un double-clic sur le widget ...
    Je livre mon code actuel en attendant de trouver la solution ...
    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
    class MeQDateEdit(QtGui.QDateEdit):
        '''QDateEdit personnalisé'''
        def __init__(self, parent = None):
            super(MeQDateEdit, self).__init__()
            self.parent = parent
            self.valeur = None
            self.setFixedWidth(90)
            self.dateChanged.connect(self.ModifiedChange)
     
        def setValeur(self, valeur = None):
            ''' Equivalent de setDate : si valeur est None met à jour self.valeur sinon utilise setDate '''
            if valeur is not None:
                self.setDate(valeur)
            else:
                self.valeur = None
                self.findChild(QtGui.QLineEdit).setText("")  
     
        def contextMenuEvent(self, event):
            ''' Active(désactive) le calendrier de mise à jour par clic droit '''
            self.setCalendarPopup(not(self.calendarPopup()))    
     
        def ModifiedChange(self):
            ''' Met à jour 'valeur' quand on modifie la date avec setDate '''
            self.valeur = self.date()
    @+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 197
    Par défaut
    Bonjour

    en regardant du côté de la méthode mouseDoubleClickEvent?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        def mouseDoubleClickEvent (self, event):
          print 'double-click'
          return QtGui.QDateEdit().mouseDoubleClickEvent(event)

Discussions similaires

  1. [AC-2003] Afficher une date au format français dans une Texte_box
    Par facteur dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/04/2014, 12h57
  2. affecter à une variable le NULL dans une requête
    Par kamclasse dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/05/2009, 23h01
  3. Insérer une date au format français dans un champ
    Par EpOnYmE187 dans le forum Installation
    Réponses: 2
    Dernier message: 14/06/2005, 12h09

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