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 :

Comment afficher le résultat d'une addition dans une boîte de dialogue?


Sujet :

wxPython

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Points : 14
    Points
    14
    Par défaut Comment afficher le résultat d'une addition dans une boîte de dialogue?
    Salut,
    je cherche a faire afficher le résultat de deux boîte de dialogues dans une boîte de dialogues.
    Je veux prendre le numéro entré par un utilisateur dans la première instruction puis de prendre la deuxième instruction et de les ajouter, puis de les affichers.
    Je n'ai pas de problème en mode console, mais avec wx python, je suis tout mélangé!
    A noter que je suis nouveau donc pas trop dur avec moi!...
    Voici mon code:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    def Add(self, evt):
      n = wx.TextEntryDialog(self,"Entrez le premier chiffre ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
     
    #afficher la fenêtre tant et aussi longtemps que l'on ne la fermera pas
      reponse = n.ShowModal()
    #Récupération du text entré
     
      nn = n.GetValue()
      if reponse != wx.ID_OK or nn == "":
       n.Destroy()
    #Demande d'entrer le second numéro.
      n1 = wx.TextEntryDialog(self,"Entrez le deuxième chiffre ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
      reponse = n1.ShowModal()
      nn = n.GetValue()
      if reponse != wx.ID_OK or nn == "":
       n.Destroy()
       #verification si autre que des chiffres
      if nn == '': #si chaine vide
       winsound.PlaySound('wav_tel/Appel.wav', winsound.SND_NODEFAULT)
     
       nn = '0' #on force a mettre 0
     
     
      lnn = len(nn) #longueur de la chaine
      vf = 0
      for i in range(0, lnn):
       if ord(nn[i]) < 48 or ord(nn[i]) > 57:
        vf = 1
     
     
       #recuperation du nombre en un entier numerique
      if vf == 1:
       winsound.PlaySound('wav_tel/Appel.wav', winsound.SND_NODEFAULT)
     
       nb = 0
       vf = 0
      else:
       nb = int(nn)
      n.Destroy()
      if reponse != wx.ID_OK or nn == "":
       self.Destroy()
     
      if reponse :
    #on affiche le numéro dans la boîte de dialogue.
       winsound.PlaySound('c:/Python25/wav_tel/bing.wav', winsound.SND_NODEFAULT)
     
       d = wx.MessageDialog(self, "  La réponse est :", "Affichage du résultat !", wx.OK)
       d.ShowModal()
       d.Destroy()
    Aussi une fois que le premier numéro est entré, je sais que cela ne fonctionne pas car si j'essais d'entrer une espace ou un vide, je devrais entendre jouer un son mais cela se produit seulement dans la deuxième routine.
    regimari

  2. #2
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Je n'ai pas vraiment le temps de regarder ton problème en détail mais voici quelques pistes:

    1°) Peut-être en utilisant wx.EVT_TEXT(parent, id, def) qui lancera def lorsque les contrôles dont l'ID sont id ont le texte de changé.

    2°) Pour changer le texte du wx.TextCtrl nommé entry par exemple il faut utiliser ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    entry.SetValue('Nouveau texte')
    .

    Je pense que ceci doit pouvoir te guider. Je regarderai en détail ce soir si tu n'as rien trouvé.

    A plus
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Points : 14
    Points
    14
    Par défaut ,
    Salut,
    Afin que tu puisse vérifier, je t'includ le code de la page au complet.
    Comme je l'ai mentionné au-par avant, je suis débutant avec ce langage même si cela fait quelques mois que je suis inscrit a la liste.
    J'ai réussi a créer deux petit logiciels et j'utilisela programmation WxPython, car j'utilise une synthèse vocal et avec WxPython, mon lecteur de revue d'écran peut lire ce qui a sur la page.
    Pour te faciliter la tâche, je t'includ le code source au complet.
    Le voici:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    #!/usr/bin/python
    # *- coding: iso-8859-1 -*
     
    import sys
    import os
    import math
    import string
    import wx #importation du modulegraphique wx
    from random import randrange #importation de la fonction randrange du module random, 
     
    import winsound
    ID_PARENT = 1000 #control ID de la fenetre principale
     
     
     
    #classe fenetre principalemenus et boutons
    class LesMenus(wx.Frame):
     def __init__(self, titre):
      wx.Frame.__init__(self, None, ID_PARENT, title = titre, size = (800, 600))
      self.panel = wx.Panel(self, -1, pos=(10,50),size=(300,400))
      self.panel.SetBackgroundColour('black')
      menuFichier = wx.Menu(style = wx.MENU_TEAROFF)
      menuFichier.Append(wx.ID_EXIT, "&Quitter\tCTRL+q") 
      menuAide = wx.Menu(style = wx.MENU_TEAROFF)
      menuAide.Append(wx.ID_ABOUT, "&A propos ...\tCTRL+N")
     
      #Barre de menu et affichage des menus dans cette barre
      menuBarre = wx.MenuBar() 
      menuBarre.Append(menuFichier, "&Fichier") 
      menuBarre.Append(menuAide, "&Aide") 
      self.SetMenuBar(menuBarre) 
     
      #creation des boutons
      boutonNiveau1 = wx.Button(self.panel, -1, "Add", pos=(200, 200))
      boutonNiveau2 = wx.Button(self.panel, -1, "Ajouter", pos=(200, 250))
     
      boutonAide = wx.Button(self.panel, -1, "Aide", pos=(600, 415))
      boutonExit = wx.Button(self.panel, -1, "Quitter", pos=(700, 415))
     
      #evenements des menus
      wx.EVT_MENU(self, wx.ID_EXIT, self.OnExit) 
      wx.EVT_MENU(self, wx.ID_ABOUT, self.OnAbout) 
     
      #evenements des boutons
      self.Bind(wx.EVT_BUTTON, self.OnExit, boutonExit)
      self.Bind(wx.EVT_BUTTON, self.OnAbout, boutonAide)
      self.Bind(wx.EVT_BUTTON, self.Add, boutonNiveau1)
      self.Bind(wx.EVT_BUTTON, self.EcrireFichier, boutonNiveau2)
     
     
     #definition du menu quitter
     def OnExit(self, evt): 
      winsound.PlaySound('wav_tel/Quitter.wav', winsound.SND_NODEFAULT)
      self.Destroy() 
     
     #definition du menu a propos
     def OnAbout(self, evt):
      d = wx.MessageDialog(self, "Agenda téléphonique, créé en décembre 2007\nPar Réginald Arseneau\nVous pouvez me rejoindre a l'adresse suivante:\nregimari@nb.sympatico.ca", "A propos : Agenda téléphonique  Version 1.00, et pour numéro de téléphone seulement!", wx.OK)
      d.ShowModal()
      d.Destroy()
     
     
     def Add(self, evt):
      n = wx.TextEntryDialog(self,"Entrez le premier chiffre ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
     
    #afficher la fenêtre tant et aussi longtemps que l'on ne la fermera pas
      reponse = n.ShowModal()
    #Récupération du text entré
     
      nn = n.GetValue()
      if reponse != wx.ID_OK or nn == "":
       n.Destroy()
    #Demande d'entrer le second numéro.
      reponse = n1.ShowModal()
      nn = n.GetValue()
     
     
      if reponse != wx.ID_OK or nn == "":
       n.Destroy()
       #verification si autre que des chiffres
      if nn == '': #si chaine vide
       winsound.PlaySound('wav_tel/Appel.wav', winsound.SND_NODEFAULT)
     
       nn = '0' #on force a mettre 0
     
     
      lnn = len(nn) #longueur de la chaine
      vf = 0
      for i in range(0, lnn):
       if ord(nn[i]) < 48 or ord(nn[i]) > 57:
        vf = 1
     
     
       #recuperation du nombre en un entier numerique
      if vf == 1:
       winsound.PlaySound('wav_tel/Appel.wav', winsound.SND_NODEFAULT)
     
       nb = 0
       vf = 0
      else:
       nb = int(nn)
      n.Destroy()
      if reponse != wx.ID_OK or nn == "":
       self.Destroy()
     
      if reponse :
    #on affiche le numéro dans la boîte de dialogue.
      n1 = wx.TextEntryDialog(self,"Entrez le deuxième chiffre ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
     
       winsound.PlaySound('c:/Python25/wav_tel/bing.wav', winsound.SND_NODEFAULT)
     
       d = wx.MessageDialog(self, "  La réponse est :", "Affichage du résultat !", wx.OK)
       d.ShowModal()
       d.Destroy()
    #Ici, quand j'exécute le programme, la première boîte de dialogue s'afffiche et j'entre le numéro, puis si je fais entré la deuxième boîte s'affiche et j'entre ledeuxième chiffre.
    #Une fois le deuxième chiffre entré, si je fais entrée la boîte de résultat s'affiche. J'ai le message écrit dans la boîte de dialogue.
    # Toutefois, je ne sais pas quoi écrire pour qu'il affiche le résultat. J'écris "résultat :" (n+n1) , mais un message d'erreur.    
     def EcrireFichier(self, evt):
     
      fichier = open('lecture.txt', 'a')
      ligne = wx.TextEntryDialog(self,"Entrez le texte ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
     
    #afficher la fenêtre tant et aussi longtemps que l'on ne la fermera pas
      reponse = ligne.ShowModal()
    #Récupération du text entré
      nn = ligne.GetValue()
      #recuperation du nombre en string
      if nn != '':
       fichier.write(nn.encode("latin-1") +"\n")
     
       #fichier.write(nn +"\n")
       fichier.close()
       ligne.Destroy()
       return
     
     
     #la classe de l'application
    class MonApp(wx.App): 
     def OnInit(self): 
      fen = LesMenus("Caculatrice") 
      fen.Show(True) 
      self.SetTopWindow(fen) 
      winsound.PlaySound('wav_tel/Appel.wav', winsound.SND_NODEFAULT)
     
      return True 
     
    #boucle principale
    app = MonApp()
    app.MainLoop()

  4. #4
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    J'ai récupéré ton code que ce matin. Là je suis au taf, je le regarderai à midi si j'ai le temps.

    Par contre, pour bien comprendre et éventuellement te guider vers des pistes peut-être plus simple, peux-tu me donner le but exact de ton code?
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 86
    Points
    86
    Par défaut
    Juste au début de ton code, je comprend pas tu utilise deux fois la même variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    nn = n.GetValue()    ICI
      if reponse != wx.ID_OK or nn == "":
       n.Destroy()
    #Demande d'entrer le second numéro.
      n1 = wx.TextEntryDialog(self,"Entrez le deuxième chiffre ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
      reponse = n1.ShowModal()
      nn = n.GetValue() et ICI
    tu devrais plutôt avoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    nn = n.GetValue()
      if reponse != wx.ID_OK or nn == "":
       n.Destroy()
    #Demande d'entrer le second numéro.
      n1 = wx.TextEntryDialog(self,"Entrez le deuxième chiffre ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
      reponse = n1.ShowModal()
      nn2 = n1.GetValue()
    J'espère que ca t'aura aidé, par contre n'oublie pas de revoir la suite.
    et pour afficher le résultat des deux nombres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    panneau = wx.Panel(self, -1)
    wx.StaticText(panneau, 1, "Le premier Nombre est : " + nn + "Le deuxième nombre est : " + nn2, pos = (0,0), style = wx.ALIGN_CENTER)
    EDIT: Désolé pour l'oublie du guillement

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Jiyuu Voir le message
    J'ai récupéré ton code que ce matin. Là je suis au taf, je le regarderai à midi si j'ai le temps.

    Par contre, pour bien comprendre et éventuellement te guider vers des pistes peut-être plus simple, peux-tu me donner le but exact de ton code?
    Salut,
    Merci pour cet intéret.
    Voilà, je veux faire une petite calculatrice avec quelques autres boutons dont je vais ajouter.
    J'ai pris le modèele de mon agenda électronique que j'ai fait l'annéee dernière mais il n'y avait qu'une seule boîte de dialogue.
    Ce que je veux, c'est qu'en appuyant sur le boutton Add, que la boîte d'édition s'affiche et que je puisse entrer un numéro.
    Cela fonctionne correctement.
    Ensuite, je récuppère la valeur entrée et je la sauve garde et j'ouvre la deuxième boîte qui demande d'entrer le numéro deux ou le deuxième chiffre.
    Une fois cela fait, je dois utiliser une routine pour vérifier si c'est une chaine vide ou une chaine lettre (Du texte). Affin de m'assurer que l'on entre vraiment un chiffre.

    Une fois cela fait, je veux afficher la réponse dans une boîte de dialogue.
    Voici ci-bas la correction que j'ai fais aujourd'huiavec l'aide d'un message sur la liste.
    Toutefois, je rencontre un problème car j'ai accès a la première boîte de dialogue, mais elle n'est jamais conservé.Voici le code:


    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
      n = wx.TextEntryDialog(self,"Entrez le premier chiffre ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
     
    #afficher la fenêtre tant et aussi longtemps que l'on ne la fermera pas
      reponse = n.ShowModal()
    #Récupération du text entré
     
      nn = n.GetValue()
      if reponse != wx.ID_OK or nn == "":
       n.Destroy()
    #Demande d'entrer le second numéro.
    #Ici j'ai changé cela.
      n1 = wx.TextEntryDialog(self,"Entrez le deuxième chiffre ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
      reponse = n1.ShowModal()
      nn2 = n1.GetValue()
      if reponse != wx.ID_OK or nn2 == "":
       n.Destroy()
    #Ici
    #J'ai essayé deprendre la valeur nn et nn2 en écrivant:
    #nn3 = nn or nn2
       #verification si autre que des chiffres
    #Et tout la suite je remplaçais la nouvelle valeur nn3 au lieu de nn, mais cela ne fonctionnait pas.
      if nn == '': #si chaine vide
       nn = '0' #on force a mettre 0
      lnn = len(nn) #longueur de la chaine
      vf = 0
      for i in range(0, lnn):
       if ord(nn[i]) < 48 or ord(nn[i]) > 57:
        vf = 1
     
     
       #recuperation du nombre en un entier numerique
      if vf == 1:
       winsound.PlaySound('wav_tel/Appel.wav', winsound.SND_NODEFAULT)
       nb = 0
       vf = 0
      else:
       nb = int(nn)
       n.Destroy()
      if reponse != wx.ID_OK or nn == "":
       self.Destroy()
    #Ici j'ai utilisé une condition que j'avais oubliè d'inscrire dans mon premier code.
      if nb == nn+nn2: #si nombre egale au nombre entré  
       winsound.PlaySound('wav_tel/Appel.wav', winsound.SND_NODEFAULT)
     
       d = wx.MessageDialog(self, "la réponse est :  "+str(nn)+str(nn2), "Affichage du résultat !", wx.OK)
     
       d.ShowModal()
       d.Destroy()
    #Voilà, j'ouvre la première boîte de dialogue et si je vérifie si j'appuie sur la barre d'espace, je devrais entendre jouer le son mais rien ne joue. Il joue si je le fais dans la deuxième boîte de dialogue.
    Merci beaucoup pour vos patiences. Je vous admirent ceux qui prenez le temps a répondre au débutants comme moi.
    Merci auxégalement aux deux autres qui ont répondu.
    reimari

  7. #7
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Ok, je comprends mieux.
    Je dois partir au taf et je t'avoue qu'hier j'ai pas trop eu le temps de regarder.

    Pour ton applic pourquoi ne pas utiliser un wx.TextCtrl plutôt qu'une boite de dialogue.

    Ensuite en surveillant les touches sur lesquels l'utilisateure appui tu fait tes vérifs plus celles qui te permettrons de savoir s'il s'agit d'un +, -, * ou / pour les calculs.

    Pour la sauvegarde tu peux mettre tout ça dans une ou plusieurs listes par exemple.

    J'espère que cette piste pourra t'aider. Tu peux aussi trouver un morceau d'aide dans le tuto de G.SWINNEN. Il traite en particulier de Tkinter, mais il y a un exemple de calculatrice dedans. Seule la conception graphique change.
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Merci,
    Justement, j'ai déjà écris un petit programme pour le jeu plus ou moins, et aussi une petite agenda téléphonique, mais très simple avec des boîtes de dialogues et cette fois c'est un peu plus compliqué car je veux prendre le résultat de la première boîte et plus le résultat de la deuxième boîte et de les additionner puis de les afficher dans une boîte de dialogue.
    regimari qui cherche toujours pour sa solution.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    QUOTE=Mugen RX;3684960]Juste au début de ton code, je comprend pas tu utilise deux fois la même variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    nn = n.GetValue()    ICI
      if reponse != wx.ID_OK or nn == "":
       n.Destroy()
    #Demande d'entrer le second numéro.
      n1 = wx.TextEntryDialog(self,"Entrez le deuxième chiffre ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
      reponse = n1.ShowModal()
      nn = n.GetValue() et ICI
    tu devrais plutôt avoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    nn = n.GetValue()
      if reponse != wx.ID_OK or nn == "":
       n.Destroy()
    #Demande d'entrer le second numéro.
      n1 = wx.TextEntryDialog(self,"Entrez le deuxième chiffre ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
      reponse = n1.ShowModal()
      nn2 = n1.GetValue()
    J'espère que ca t'aura aidé, par contre n'oublie pas de revoir la suite.
    et pour afficher le résultat des deux nombres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    panneau = wx.Panel(self, -1)
    wx.StaticText(panneau, 1, "Le premier Nombre est : " + nn + "Le deuxième nombre est : " + nn2, pos = (0,0), style = wx.ALIGN_CENTER)
    EDIT: Désolé pour l'oublie du guillement[/QUOTE]

    Salut,
    Je m'excuse de ne pas avoir répondu avant!
    J'ai utilisé comme vous l'avez mentionné une deuxième variable pour le text Entree et j'ai comme vous l'avez mentionné dans votre code additionné les 2 valeurs trs entrées mais quand je veux l'ajouter dans la boîte de dialogue, je n'y arrive pas.
    Avez-vous une solution pour :
    01, utiliser un boutton comme je le fait,
    02, Entrer un numéro dans une boîte de dialogue.
    03, Entrer un deuxième numéro dans une autre boîte de dialogue,
    04, Ajouter c'est deux numéro en récupérant leurs valeur entrées avec .getvalue.
    05, Puis d'afficher le résultat dans une boîte de dialogue.
    J'avais remarqué pour le guillemet. Pas de problème.
    regimari

  10. #10
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 86
    Points
    86
    Par défaut
    Bonjour,

    en fait j'ai juste regardé ton bout de code c'est tout et j'ai répondu en voyant cela, c'est vrai que c'est pas assez complet et peut être pas très clair. En tout cas, la méthode de Jiyuu me semble très bien, tu peux garder ce que tu fais et rajouter juste l'événement pour détecter ta touches de fonctions entre ces nombres.

    Sinon je te propose de regarder cela :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    import wx
    import string
    import aff
     
    class MaFenetre(wx.Dialog):
            def __init__(self, titre):
                wx.Dialog.__init__(self, None, -1, title = titre, pos = (0,0))
                sizer0 = wx.BoxSizer(wx.VERTICAL)
                sizer1 = wx.BoxSizer(wx.HORIZONTAL)
                panneau = wx.Panel(self, -1)
     
                # Zone de text et bouton définis
                self.text = wx.TextCtrl(panneau, -1)
                self.text2 = wx.TextCtrl(panneau, -1)
     
                bouton = wx.Button(panneau, -1, "+")
                bouton2 = wx.Button(panneau, -1, "-")
                bouton3 = wx.Button(panneau, -1, "*")
                bouton4 = wx.Button(panneau, -1, "/")
     
                # Text statique
                self.pretext = wx.StaticText(panneau, 1, " Ton premier chiffre : ", style = wx.ALIGN_CENTER)
                self.pretext2 = wx.StaticText(panneau, 1, " Ton deuxième chiffre : ", style = wx.ALIGN_CENTER)
     
                # Placer graphique de ces zones
                sizer1.Add(self.pretext, 0, wx.ALIGN_CENTER)
                sizer0.Add(self.pretext2, 0, wx.ALIGN_CENTER)
     
                sizer0.Add(self.text, 0, wx.ALIGN_CENTER)
                sizer0.Add(self.text2, 0, wx.ALIGN_CENTER)
     
                sizer1.Add(bouton, 0, wx.ALIGN_CENTER)
                sizer1.Add(bouton2, 0, wx.ALIGN_CENTER)
                sizer1.Add(bouton3, 0, wx.ALIGN_CENTER)
                sizer1.Add(bouton4, 0, wx.ALIGN_CENTER)
     
                panneau.SetSizer(sizer1)
                sizer0.Add(panneau, 0)
                self.SetSizer(sizer0)
                self.Fit()
                self.Bind(wx.EVT_BUTTON, self.OnClick, bouton)
                self.Bind(wx.EVT_BUTTON, self.OnClick2, bouton2)
                self.Bind(wx.EVT_BUTTON, self.OnClick3, bouton3)
                self.Bind(wx.EVT_BUTTON, self.OnClick4, bouton4)
     
            def OnClick(self, event):
                nb1 = self.text.GetValue()     
                nb2 = self.text2.GetValue()
                resultat = string.atoi(nb1)  + string.atoi(nb2)    
                self.Destroy()
                aff.aff(resultat)
     
            def OnClick2(self, event):
                nb1 = self.text.GetValue()     
                nb2 = self.text2.GetValue() 
                resultat = string.atoi(nb1)  - string.atoi(nb2)    
                self.Destroy()
                aff.aff(resultat)
     
            def OnClick3(self, event):
                nb1 = self.text.GetValue()     
                nb2 = self.text2.GetValue()  
                resultat = string.atoi(nb1)  * string.atoi(nb2)   
                self.Destroy()
                aff.aff(resultat)
     
            def OnClick4(self, event):
                nb1 = self.text.GetValue()     
                nb2 = self.text2.GetValue()
                resultat = string.atoi(nb1)  / string.atoi(nb2)     
                self.Destroy()
                aff.aff(resultat)
     
    class InitBar(wx.App):
            def OnInit(self):
                fen = MaFenetre("Demande de nombre : ")
                fen.Show(True)
                self.SetTopWindow(fen)
                return True
     
    app = InitBar()
    app.MainLoop()

    Voila pour la partie de départ, à corriger je pense dans le placement des bouton, j'ai fait ca un peu vite.

    Puis pour afficher:

    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
    28
    29
     
    def aff(Resu):
         class NewFen2(wx.Frame):
                def __init__(self, titre):
                      wx.Frame.__init__(self, None, -1, title = titre, pos = (300,300), size = (300,300))
                      panneau = wx.Panel(self, -1)         
                      sizer1 = wx.BoxSizer(wx.VERTICAL)
                      #######################  Zone de text      
                      self.pretext1 = wx.StaticText(panneau, 1, Resu, pos = (0,0), style = wx.ALIGN_CENTER)
                      sizer1.Add(self.pretext1, 0, wx.ALIGN_CENTER)
     
                      #######################  Zone de définition des boutons
                      self.okBTN = wx.Button(panneau,-1,label = "OK", pos = (100,200), style = wx.ALIGN_CENTER)
                      self.Bind(wx.EVT_BUTTON,self.okBTN_click,self.okBTN)
                      sizer1.Add(self.okBTN, 0, wx.ALIGN_CENTER)
                      #######################
     
                def okBTN_click(self,evt):
                      self.Destroy()
     
        class MonApp4(wx.App):
                def OnInit(self):
                         fen3 = NewFen2("Résultat")
                         fen3.Show(True)
                         self.SetTopWindow(fen3)
                         return True
     
        app = MonApp4()
        app.MainLoop()

    Voila j'ai vite fait un truc que tu peux tester mais doit y avoir des choses à revoir et c'est peut être pas ce que tu veux. Désolé pas plus de temps je repasserai sans doute si tu as des questions. Bon courage

    EDIT: Je viens de me rendre compte que tu voulais juste afficher tes chiffres. J'ai pensé calculette lol!!!J'ai pas relu le haut.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Salut et merci!
    Grâce a toi, j'ai solutionné mon affichage dans ma boîte de dialogue.....
    Il suffisait d'écrire:


    resultat = string.atoi(nn) + .string.atoi(nn2)

    Enfin, pour ton code dans deux fenêtres, je n'ai pas réussi a pouvoir le faire fonctionner, car j'ai un message d'erreurs mais il ne dit pas qu'elle est l'erreur.
    wxPython: stdout/stderr.
    Merciencore une fois pour ta réponse.

  12. #12
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 86
    Points
    86
    Par défaut
    Ok, de rien...

    Je viens de comprendre, puisque hier en rédigeant j'ai pensé à cette transformations chaine en nombre. J'aurais mieux fait de relire, ca aurais limiter le nombre de postes, content d'avoir pu t'aider.

    Désolé pour le code sans doute incomplet, j'ai vite fait des trucs plus tiré des bouts de ce que j'ai fait ailleurs. Ca donne pas toujours du bon, vitesse et précipitation lol

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. Réponses: 4
    Dernier message: 02/07/2008, 11h32
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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