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