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 :

TimeCtrl ne marche plus [Python 3.X]


Sujet :

wxPython

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2018
    Messages : 12
    Points : 10
    Points
    10
    Par défaut TimeCtrl ne marche plus
    Bonjour

    Depuis ma dernière mise à jour de wxpython, le contrôler TimeCtrl de lib.masked a des soucis :
    Le curseur "bas" du SpinButton ne réponds pas quand on atteint la valeur initiale.

    Le module (qu'on trouve dans Lib/siet-packages/wx/lib/masked) est exécutable.
    Par exemple vous tapez 5 dans les heures, un petit tour dans les minutes puis revenez dans les heures.
    Vous pouvez alors augmenter les heures avec la flèche UP, redescendre avec DOWN, mais arrivé à 5, plus rien. Ca ne descend plus.

    J'ai pensé qu'il avait une valeur mini affectée, une limite, un truc dans ce genre mais non.
    Ce qui est vraiment étrange, c'est que c'est l'événement qui semble ne pas être transmit :

    J'ai ajouté un "print("__OnSpinUp")" dans la méthode __OnSpinUp (ligne 1234) et un "print("__OnSpinDown")" dans la méthode __OnSpinDown.
    Le fait de cliquer sur la flèche du bas ne déclenche pas d'appel à cette méthode quand la valeur initiale est atteinte.
    En revanche, la touche flèche bas fonctionne ! Cela appelle la même méthode : 474 : self._SetKeycodeHandler(wx.WXK_DOWN, self.__OnSpinDown)
    Cela semble donc bien être un problème de transmission d'événement (ligne 647 : self.__spinButton.Bind(wx.EVT_SPIN_DOWN, self.__OnSpinDown, self.__spinButton))

    Et là, je ne vois plus quoi faire !

    Si quelqu'un y comprend quelque chose ou connais un autre contrôleur qui fait le même boulot (saisie d'une heure), je lui serais reconnaissant !

    Merci d'avance ;-)

    a+
    Images attachées Images attachées  

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    tu peux essayer le contrôle TimePickerCtrl du module adv de wxpython.
    Avec ce code :
    1 - gui.py
    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
    import wx
    import wx.xrc
    import wx.adv
    ## Class MainFrame
    class MainFrame ( wx.Frame ):
     
        def __init__( self, parent ):
            wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = 'test TimePickerCtrl', pos = wx.DefaultPosition, size = wx.Size( 271,110 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
            self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
            bSizer1 = wx.BoxSizer( wx.VERTICAL )
            self.m_panel1 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
            bSizer1.Add( self.m_panel1, 1, wx.EXPAND |wx.ALL, 5 )
            self.m_timePicker1 =  wx.adv.TimePickerCtrl( self, wx.ID_ANY, wx.DefaultDateTime, wx.DefaultPosition, wx.DefaultSize)
            self.m_timePicker1.SetFont( wx.Font( 24, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, wx.EmptyString ) )
            bSizer1.Add( self.m_timePicker1, 0, wx.ALL, 10 )
            self.SetSizer( bSizer1 )
            self.Layout()
            self.Centre( wx.BOTH )
     
        def __del__( self ):
            pass
    2 - testWxPython.py
    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
    #importing wx files
    import wx 
    #import the  GUI file
    import gui
     
    #inherit from the MainFrame created in wxFowmBuilder and create TestFrame
    class TestFrame(gui.MainFrame):
        #constructor
        def __init__(self,parent):
            #initialize parent class
            gui.MainFrame.__init__(self,parent)       
    #mandatory in wx, create an app, False stands for not deteriction stdin/stdout
    #refer manual for details
    app = wx.App(False)
    #create an object of TestFrame
    frame = TestFrame(None)
    #show the frame
    frame.Show(True)
    #start the applications
    app.MainLoop()
    voici ce que j'obtiens :

    Nom : timepickerctrl.gif
Affichages : 172
Taille : 55,6 Ko


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2018
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Hello

    Merci pour cette réponse ! J'avais perdu espoir

    Je teste cela dès que j'ai le temps, et je reviens mettre un "résolu" si ça marche (ce qui devrait être le cas !)

    Merci ;-)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2018
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Re

    Effectivement il n'y a pas le bug présent dans wx.lib.masked.TimeCtrl

    Seul problème, on ne peut pas désactiver les secondes (possible dans wx.lib.masked.TimeCtrl). Dommage :-(

    Je vais le positionner en lieu et place de mes anciens TimeCtrl, en espérant ne pas avoir de problème d'agencement dans mes fenêtres.

    Sinon, j'irai fouiller dans le code source de wx.adv pour voir si je peux faire une classe semblable à TimePickerCtrl mais sans les secondes.

    Encore merci pour le tuyau.

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

Discussions similaires

  1. Projet qui marche sous Eclipse ne marche plus en JAR
    Par leminipouce dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 26/10/2005, 18h59
  2. [SEND TO]Menu contextuel "send to" ne marche plus
    Par Hoegaarden dans le forum Windows XP
    Réponses: 8
    Dernier message: 13/10/2005, 11h41
  3. [FOP] Le generation de PDF ne marche plus
    Par Sherkhan dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 23/03/2005, 08h26
  4. [CR] Mes rapports (.PDF) ne marche plus depuis acrobat 7
    Par theflamme dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 10/01/2005, 15h21
  5. ma fonction marche plus sur le serveur...
    Par CDRIK dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/10/2004, 04h24

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