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 :

Pb pour recuperer une variable


Sujet :

wxPython

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Par défaut Pb pour recuperer une variable
    Salut a tous!!Je viens ici car j'ai debuté lundi sur un projet deja commencer. J'ai un souci le voici. En fait en lançant mon programme ou une boite de dialogue s'affiche, je demande une identification, derriere j'enregistre ces dernier et j'ouvre le menu. Et du menu en cliquant sur un lien j'en ai besoin, or comme je change de class il me sort l'erreur que la variable n'est pas defini car non global. comme puis je faire pour recuperer ces variables.

    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
    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
     
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
    ##### Librairies
    import wx                   #Permet d'accéder au wxWidgets (Interface graphique)
    import locate_PC            #Permet de localiser un PC
    import locate_all_PC        #Permet de localiser plusieurs PC
    import scan_port            #Permet de scanner un port
    import scan_all_port        #Permet de scanner plusieurs port
    import os                   #Permet de faire des operations systeme
    import ctypes               #Permet d'avoir des informations sur l'ecran
    #####
     
    ########################### Fonction qui determine si un fichier existe ou pas
    def file_exists(fichier):
       try:
          file(fichier)
          return True
       except:
          return False
    ###########################
     
    ID_EQUIP = 100
    ID_GROUP = 101
    ID_ONEPORT = 200
    ID_MOREPORT = 201
    ID_PROPOS = 300
     
    ############################ Recupère la résolution de l'écran
    SM_CXSCREEN = 0
    SM_CYSCREEN = 1
    taille_x = ctypes.windll.user32.GetSystemMetrics(SM_CXSCREEN)
    taille_y = ctypes.windll.user32.GetSystemMetrics(SM_CYSCREEN)
    ############################
     
    # Définition de la boite de dialogue identification
     
    class MaFenetre(wx.Frame):
        def __init__(self, titre):
            wx.Frame.__init__(self, None, -1, title = titre)
            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)     # Entrer du Username
            self.text2 = wx.TextCtrl(panneau, -1)    # Entrer son mot de passe
            bouton = wx.Button(panneau, -1, "Valider")
     
            # Text statique
            self.pretext = wx.StaticText(panneau, 1," Username :", style = wx.ALIGN_CENTER)
            self.pretext2 = wx.StaticText(panneau, 1," Password :", style = wx.ALIGN_CENTER)
     
            # Placer graphique de ces zones
            sizer1.Add(self.pretext, 0, wx.ALIGN_CENTER)
            sizer1.Add(self.text, 0, wx.ALIGN_CENTER)
            sizer1.Add(self.pretext2, 0, wx.ALIGN_CENTER)
            sizer1.Add(self.text2, 0, wx.ALIGN_CENTER)
            sizer1.Add(bouton, 0, wx.ALIGN_CENTER)
            panneau.SetSizer(sizer1)
            sizer0.Add(panneau, 0)
            self.SetSizer(sizer0)
            self.Fit()
            self.Bind(wx.EVT_BUTTON, self.OnClick, bouton)
     
        def OnClick(self, event):
            user = self.text.GetValue()
            password = self.text2.GetValue()
            li = [user, password]  #Stock "user" et "password" dans la liste 'li'
            print li
            self.Destroy()
     
    # Définition des menus
     
    class LesMenus(wx.Frame):
       def __init__(self, titre):
            wx.Frame.__init__(self, None, 1,title = titre, size = (taille_x, taille_y))
     
            menuLocaliser = wx.Menu()
            menuLocaliser.Append(ID_EQUIP, "&Un équipement\tCTRL+e")
            menuLocaliser.Append(ID_GROUP, "&Un groupe de PC\tCTRL+g")
     
            menuScanner = wx.Menu()
            menuScanner.Append(ID_ONEPORT,
                               "&Un port physique d'un equipement reseau\tCTRL+e")
            menuScanner.Append(ID_MOREPORT,
                               "&Plusieurs ports physiques d'un equipement reseau\tCTRL+g")
     
            menuQuitter = wx.Menu()
            menuQuitter.Append(wx.ID_EXIT, "&Quitter\tCTRL+q")
     
            menuQs = wx.Menu()
            menuQs.Append(ID_PROPOS, "&A propos de")
     
            menuBarre = wx.MenuBar()
            menuBarre.Append(menuLocaliser, "&Localiser")
            menuBarre.Append(menuScanner, "&Scanner")
            menuBarre.Append(menuQuitter, "&Quitter")
            menuBarre.Append(menuQs, "&?")
            self.SetMenuBar(menuBarre)
     
            wx.EVT_MENU(self, ID_EQUIP, self.Equip)
            wx.EVT_MENU(self, ID_GROUP, self.Group)
            wx.EVT_MENU(self, ID_ONEPORT, self.Oneport)
            wx.EVT_MENU(self, ID_MOREPORT, self.Moreport)
            wx.EVT_MENU(self, wx.ID_EXIT, self.OnExit)
            wx.EVT_MENU(self, ID_PROPOS, self.Propos)
     
       def Equip(self, evt):      #L'utilisateur veut localiser un PC
            print li    #ICI PERTE car Variable non global
    #        locate_PC.locate(adr_eq,user,password)
     
       def Group(self, evt):      #L'utilisateur veut localiser plusieurs PC
            locate_all_PC.locate_all(user,password)
     
       def Oneport(self, evt):    #L'utilisateur veut scanner un port d'un routeur
            host = scan_port.ask_host()             #On demande à l'utilisateur le nom du routeur
            port, mode = scan_port.ask_port()       #On demande à l'utilisateur le nom du port
            scan_port.scan(user, password, host, port, mode)
     
       def Moreport(self, evt):   #L'utilisateur veut scanner plusieurs ports d'un routeur
            scan_all_port.scan_all(user,password)
     
       def OnExit(self, evt):
            self.Destroy()
     
       def Propos(self, evt):
            dlg = wx.MessageDialog(self,"CISCO TOOLS V1.3", style = wx.OK)
            retour = dlg.ShowModal()
            dlg.Destroy()
     
    class MonApp(wx.App):
       def OnInit(self):
            fen = LesMenus("CISCO TOOLS V1.3")
            identif = MaFenetre("Rentrez vos identifiants CISCO")
            fen.Show(True)           #Affiche la fenetre principale menu
            identif.Show(True)       #Affiche la boite de dialogue identifiant
    #        self.SetTopWindow(identif)
            self.SetTopWindow(fen)
            return True
     
    if file_exists("Temp_locate_PC.txt") == True:   #Si le fichier temporaire existe, on le supprime
        os.remove("Temp_locate_PC.txt")
    if file_exists("Temp_scan_port.txt") == True:   #Si le fichier temporaire existe, on le supprime
        os.remove("Temp_scan_port.txt")
     
    app = MonApp()
    app.MainLoop()
    P.S:Le code n'est pas fini car je veux d'abord resoudre ce pb.

    Voila une idée. Merci d'avance

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Par défaut
    Personne n'a une idée. J'avais essaye avec deux fichiers, dont le menue appelle une class sur le deuxieme fichier. Et je sais pas comment renvoyer mes varriable. Je pensais le faire en deux temps mais j'ai pas trouve pas fautes d'avoir essaye. Juste une idée ou un bout de code par experience, ou vous demande un login un pass et recupere pour continuer dans votre application.

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Par défaut
    J'ai une autres question!!Je connais pas encore bien les ficelles de ce langage mais est-il possible de rendre une variable global, malgré le risque que cela comporte??

    EDIT: Voila je vais tenter une solution. Je vais utiliser un fichier temporaire ou je stockerai le contenu de ma variable, (Cryptage possible!), et dans le reste de mon programme je m'en reservirai et je la detruit a la fin du programme ou en cas de quittez. Par contre probleme lors d'un plantage ou d'une fermeture brutal, mais je me dis qu'en cryptant c'est bon!!Ca vous parle ca vous semble bien?

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Par défaut
    C'est good, je procede comme dit plus haut, j'encrypte mon mot de passe, je le stock dans un fichiers temp et je recupere derriere et le detruit. comme ca en cas de probleme le mot de passe sera pas accessible au premier venu lol!!

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    ###Librairie utile
    import wx      #Permet d'accéder au wxWidgets (Interface graphique)
    import re      #Permet de faire des recherches sur des chaines de caractères
    import string  #Permet de faire des operations sur les chaines de caractères (atoi : transforme un string et int)
    import os      #Permet de faire des operations systeme
    import crypt   #Permet d'acceder à la fonction de cryptage
    ###
     
    # Définition fenêtre d'identification
     
    class MaFenetre(wx.Frame):
        def __init__(self, titre):
            wx.Frame.__init__(self, None, -1, title = titre)
            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)     # Entrer du Username
            self.text2 = wx.TextCtrl(panneau, -1, style = wx.TE_PASSWORD)    # Entrer son mot de passe
            bouton = wx.Button(panneau, -1, "Valider")
     
            # Text statique
            self.pretext = wx.StaticText(panneau, 1," Username :", style = wx.ALIGN_CENTER)
            self.pretext2 = wx.StaticText(panneau, 1," Password :", style = wx.ALIGN_CENTER)
     
            # Placer graphique de ces zones
            sizer1.Add(self.pretext, 0, wx.ALIGN_CENTER)
            sizer1.Add(self.text, 0, wx.ALIGN_CENTER)
            sizer1.Add(self.pretext2, 0, wx.ALIGN_CENTER)
            sizer1.Add(self.text2, 0, wx.ALIGN_CENTER)
            sizer1.Add(bouton, 0, wx.ALIGN_CENTER)
            panneau.SetSizer(sizer1)
            sizer0.Add(panneau, 0)
            self.SetSizer(sizer0)
            self.Fit()
            self.Bind(wx.EVT_BUTTON, self.OnClick, bouton)
     
        def OnClick(self, event):
            user = self.text.GetValue()
            password = self.text2.GetValue()
            file_name = "vartemp.txt"
            file = open(file_name, 'a')        #On ouvre le fichier temp ou on sauve user
            file.write(user)                   #On écrit
    ############################### On sauvegarde
            file.close                         
            file = open(file_name, 'a')
    ###############################
    ############################### Demande de cryptage du Mots de passe
            passwordcrypt = crypt.Crypt(password)
            file2_name = "vartemp2.txt"
            file = open(file2_name, 'a')        #On ouvre le fichier temp ou on sauve user
            file.write(passwordcrypt)                   #On écrit
    ############################### On sauvegarde
            file.close                         
            file = open(file2_name, 'a')
    ###############################
            self.Destroy()
     
    class MonApp2(wx.App):
       def OnInit(self):   
            fen = MaFenetre("Rentrez vos identifiants CISCO")
            fen.Show(True)
            self.SetTopWindow(fen)
            return True
     
    def ident():
        app = MonApp2()
        app.MainLoop()
    Pour recuperer les variable il suffit d'ouvrir le fichier de decrypter et de stocker et c'est parti!!!

  5. #5
    Membre expérimenté
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Par défaut
    Il y a plus simple :

    Au lieu d'utiliser un wx.Frame pour ta boite de dialogue de login, utilise un wx.Dialog que tu appelles à la fin de la méthode __init__ de ta fenêtre principale.

    Comme ceci :

    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
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
    ##### Librairies
    import wx                   #Permet d'accéder au wxWidgets (Interface graphique)
    import os                   #Permet de faire des operations systeme
     
    ########################### Fonction qui determine si un fichier existe ou pas
    def file_exists(fichier):
    	try:
    		file(fichier)
    		return True
    	except:
    		return False
    ###########################
     
    ID_EQUIP = 100
    ID_GROUP = 101
    ID_ONEPORT = 200
    ID_MOREPORT = 201
    ID_PROPOS = 300
     
    ############################ Recupère la résolution de l'écran
    SM_CXSCREEN = 0
    SM_CYSCREEN = 1
    ############################
     
    # Définition de la boite de dialogue identification
     
    class MaFenetre(wx.Dialog):
    	def __init__(self, titre):
    		wx.Dialog.__init__(self, None, -1, title = titre)
    		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)     # Entrer du Username
    		self.text2 = wx.TextCtrl(panneau, -1)    # Entrer son mot de passe
    		bouton = wx.Button(panneau, wx.ID_OK, "Valider")
     
    		# Text statique
    		self.pretext = wx.StaticText(panneau, 1," Username :", style = wx.ALIGN_CENTER)
    		self.pretext2 = wx.StaticText(panneau, 1," Password :", style = wx.ALIGN_CENTER)
     
    		# Placer graphique de ces zones
    		sizer1.Add(self.pretext, 0, wx.ALIGN_CENTER)
    		sizer1.Add(self.text, 0, wx.ALIGN_CENTER)
    		sizer1.Add(self.pretext2, 0, wx.ALIGN_CENTER)
    		sizer1.Add(self.text2, 0, wx.ALIGN_CENTER)
    		sizer1.Add(bouton, 0, wx.ALIGN_CENTER)
    		panneau.SetSizer(sizer1)
    		sizer0.Add(panneau, 0)
    		self.SetSizer(sizer0)
    		self.Fit()
    		#self.Bind(wx.EVT_BUTTON, self.OnClick, bouton)
     
    	def GetValue(self):
    		user = self.text.GetValue()
    		password = self.text2.GetValue()
    		li = [user, password]  #Stock "user" et "password" dans la liste 'li'
    		return li
     
    class LesMenus(wx.Frame):
    	def __init__(self, titre):
    		wx.Frame.__init__(self, None, 1,title = titre, size = (800, 600))
     
    		menuLocaliser = wx.Menu()
    		menuLocaliser.Append(ID_EQUIP, "&Un équipement\tCTRL+e")
    		menuLocaliser.Append(ID_GROUP, "&Un groupe de PC\tCTRL+g")
     
    		menuScanner = wx.Menu()
    		menuScanner.Append(ID_ONEPORT,
    						"&Un port physique d'un equipement reseau\tCTRL+e")
    		menuScanner.Append(ID_MOREPORT,
    						"&Plusieurs ports physiques d'un equipement reseau\tCTRL+g")
     
    		menuQuitter = wx.Menu()
    		menuQuitter.Append(wx.ID_EXIT, "&Quitter\tCTRL+q")
     
    		menuQs = wx.Menu()
    		menuQs.Append(ID_PROPOS, "&A propos de")
     
    		menuBarre = wx.MenuBar()
    		menuBarre.Append(menuLocaliser, "&Localiser")
    		menuBarre.Append(menuScanner, "&Scanner")
    		menuBarre.Append(menuQuitter, "&Quitter")
    		menuBarre.Append(menuQs, "&?")
    		self.SetMenuBar(menuBarre)
     
    		wx.EVT_MENU(self, ID_EQUIP, self.Equip)
    		wx.EVT_MENU(self, ID_GROUP, self.Group)
    		wx.EVT_MENU(self, ID_ONEPORT, self.Oneport)
    		wx.EVT_MENU(self, ID_MOREPORT, self.Moreport)
    		wx.EVT_MENU(self, wx.ID_EXIT, self.OnExit)
    		wx.EVT_MENU(self, ID_PROPOS, self.Propos)
     
    		dlg = MaFenetre("Rentrez vos identifiants CISCO")
    		retour = dlg.ShowModal()
    		self.li = dlg.GetValue()
    		dlg.Destroy()
     
    	def Equip(self, evt):      #L'utilisateur veut localiser un PC
    		print self.li    #ICI PERTE car Variable non global
     
    	def Group(self, evt):      #L'utilisateur veut localiser plusieurs PC
    		locate_all_PC.locate_all(user,password)
     
    	def Oneport(self, evt):    #L'utilisateur veut scanner un port d'un routeur
    		host = scan_port.ask_host()             #On demande à l'utilisateur le nom du routeur
    		port, mode = scan_port.ask_port()       #On demande à l'utilisateur le nom du port
    		scan_port.scan(user, password, host, port, mode)
     
    	def Moreport(self, evt):   #L'utilisateur veut scanner plusieurs ports d'un routeur
    		scan_all_port.scan_all(user,password)
     
    	def OnExit(self, evt):
    		self.Destroy()
     
    	def Propos(self, evt):
    		dlg = wx.MessageDialog(self,"CISCO TOOLS V1.3", style = wx.OK)
    		retour = dlg.ShowModal()
    		dlg.Destroy()
     
    class MonApp(wx.App):
    	def OnInit(self):
    		fen = LesMenus("CISCO TOOLS V1.3")
    		fen.Show(True)           #Affiche la fenetre principale menu
    		self.SetTopWindow(fen)
    		return True
     
    app = MonApp()
    app.MainLoop()

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Par défaut
    Ok merci j'essairais.

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

Discussions similaires

  1. [2.x] [Twig]Problème pour recuperer une variable
    Par cescu dans le forum Symfony
    Réponses: 0
    Dernier message: 20/02/2013, 11h38
  2. [Configuration] php pour recuperer une variable dans l'url sans utiliser $_GET
    Par mikebranque dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/06/2006, 20h22
  3. Réponses: 1
    Dernier message: 22/05/2006, 14h44
  4. Réponses: 5
    Dernier message: 08/09/2005, 20h33
  5. comment recuperer une variable dans flash
    Par krépuscul dans le forum Flash
    Réponses: 30
    Dernier message: 16/10/2003, 09h40

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