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 :

wx.Dialog et wx.EVT_CHAR


Sujet :

wxPython

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 28
    Par défaut wx.Dialog et wx.EVT_CHAR
    Bonjour à tous.

    Voilà, j'ai décidé de programmer une interface graphique dans laquelle on peut associé des touches à des noms.

    Le problème que j'ai actuellement c'est lorsque je demande à l'utilisateur de saisir la touche qu'il souhaite enregistrer, je le fait via une classe héritée de wx.Dialog, sans bouton ni autre interaction possible que la saisie de touche

    Le problème, c'est que ma fenêtre de dialogue n'intercepte pas l'évènement d'appui de touche.

    Voici une partie du code, très simplifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class FenetreDemandeTouche(wx.Dialog):
        def __init__(self, parent):
            wx.Dialog.__init__(self, parent, title = u"Sélection de la touche",style = wx.WANTS_CHARS|wx.SYSTEM_MENU|wx.CAPTION | wx.CLOSE_BOX);
            self.Bind(wx.EVT_CHAR, self.pushOnTouche);
            self.ShowModal();
        def pushOnTouche(self, event):
            print event.GetKeyCode();
    Rien que ces quelques lignes ne fonctionnent pas comme je le voudrais ( une fenêtre de dialogue s'ouvre sans problème, mais lorsqu'une touche est pressée, le programme émet un bip, mais ne "print" rien )

    Merci d'avance

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour et bienvenue sur le forum,

    en inserant un panel dans ton dialog et en faisant le Bind sur celui-ci, cela fonctionne:
    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
    25
    26
    27
    import wx
     
    class FenetreDemandeTouche(wx.Dialog):
        def __init__(self, parent):
            wx.Dialog.__init__(self, parent, title = u"Selection de la touche",
                    style = wx.WANTS_CHARS|wx.SYSTEM_MENU|wx.CAPTION | wx.CLOSE_BOX)
            panel = wx.Panel(self, -1, style = wx.WANTS_CHARS)
            panel.Bind(wx.EVT_CHAR, self.pushOnTouche)
            self.ShowModal()
        def pushOnTouche(self, event):
            print event.GetKeyCode()
     
    class MyFrame(wx.Frame):
        def __init__(self ,*args, **kwargs):
            wx.Frame.__init__(self, *args, **kwargs)
            panel = wx.Panel(self, -1)
            btn = wx.Button(panel, -1, label="push me")
            self.Bind(wx.EVT_BUTTON, self.OnPushButton, btn)
     
        def OnPushButton(self ,evt):
            dialog = FenetreDemandeTouche(self)
            evt.Skip()
     
    app = wx.PySimpleApp(redirect=False)
    fr = MyFrame(None, -1, title="test")
    fr.Show(True)
    app.MainLoop()
    Par contre, tu n'as aucun intérêt à mettre des ; en fin de ligne en python

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 28
    Par défaut
    Ah, mais oui, ça marche!

    Je n'avais pas penser à mettre le style wx.WANTS_CHAR sur un panel ( bien que j'avais essayer de mettre un panel dans le dialog ).

    Merci beaucoup à toi, et à ta réponse claire et rapide!

    Pour les ; c'est une vieille habitude de Java, et comme j'ai pas vu d'effet notable de les mettres, je le fait encore, histoire de pas perdre cette habitude ^^

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

Discussions similaires

  1. Pop-up d'une dialog box a partir d'un bouton
    Par bobbyjack dans le forum MFC
    Réponses: 21
    Dernier message: 13/09/2005, 15h32
  2. Difference entre fenetre et boite de dialog
    Par billyboy dans le forum Windows
    Réponses: 2
    Dernier message: 02/06/2003, 15h43
  3. Empecher le curseur de sortir du dialog
    Par Gadjo dans le forum MFC
    Réponses: 5
    Dernier message: 18/11/2002, 18h01
  4. [awt][dialog]
    Par Ultra-FX dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 06/11/2002, 16h22
  5. Quoi ?! Common Dialog fait crasher DirectDraw ?
    Par Magus (Dave) dans le forum DirectX
    Réponses: 4
    Dernier message: 21/10/2002, 19h01

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