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 :

utliser une gauge pour visualiser la progression de l'execution d'une fonction


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 151
    Par défaut utliser une gauge pour visualiser la progression de l'execution d'une fonction
    bonjour,
    les gauges je connais pas trop comment les utliser
    je l'ai jamais utlisés.
    en fait , mon interface contient un bouton exec suite à l'appuis sur ce boutton on commence à executer une fonction qui est un peut longue.Je veux que l'utlisateur visualise l'avancement de la fonction dans une gauge...
    voici mon code sans gauge mais je ne sait pas comment ajouter la gauge et comment l'utliser
    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
     
    import wx
    import os
    import glob
    import methode1
    class maissa(wx.Frame):
    	path1="path"
    	MyList = []
    	def __init__(self,parent,id):
    		wx.Frame.__init__(self,parent,id,"la fenetre dessai",size=(400,300))
    		panel=wx.Panel(self)
    		status=self.CreateStatusBar()
    		menubar=wx.MenuBar()
    		first=wx.Menu()
    		first.Append(wx.ID_OPEN,"choose\tCTRL+o","this will choose a new directroy")
    		menubar.Append(first,"File")
    		self.SetMenuBar(menubar)
    		b2=wx.Button(panel,label="exec",pos=(20,30),size=(75,23))
    		self.Bind(wx.EVT_BUTTON, self.OnTrait,b2)
    		wx.EVT_MENU(self, wx.ID_OPEN, self.opendir)
    		self.Bind(wx.EVT_COMBOBOX, self.OnSelect)
    	def OnTrait(self, event):
    		liste=os.listdir(maissa.path1)
    		liste2=glob.glob(maissa.path1)
    		path_dest='C:\Users\User\Desktop\maissagoge.txt'
    		for i in range(len (liste)):
    			path_s=liste2[0]+'\\' + liste[i]
    			X=path_s.endswith("_SCH.C") or path_s.endswith("_SCH.c")or path_s.endswith("_sch.c")or path_s.endswith("_sch.C")
    			if X == True:
    				methode1.recherche(path_s,path_dest)
     
    	def OnSelect(self, event):
    		self.item = event.GetSelection()
    		print "lelement choisi est", item
    	def opendir(self, event):
    		dlg = wx.DirDialog(self, "Choose a directory:", style=wx.DD_DEFAULT_STYLE | wx.DD_NEW_DIR_BUTTON)
    		if dlg.ShowModal() == wx.ID_OK:
    			maissa.path1=dlg.GetPath()
     
    if __name__=='__main__':
    	app=wx.PySimpleApp()
    	frame=maissa(parent=None,id=-1)
    	frame.Show()
    	app.MainLoop()

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 151
    Par défaut gauge setRange
    coucou
    jai essayer d'utliser la gauge mais mon probléme est le suivant:on atteind la fin de la gauge avant que la fin de l'execution de la fonction ne finisse,je crois que c'est à cause de la SetRange.je ne sait pas comment sychroniser la gauge avec ma fonction
    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
     
    import wx
    import os
    import glob
    import methode1
    class maissa(wx.Frame):
    	path1="path"
    	MyList = []
    	def __init__(self,parent,id):
     
    #******************************************************************************************
    		wx.Frame.__init__(self,parent,id,"la fenetre dessai",size=(400,300))
    		panel=wx.Panel(self)
    		status=self.CreateStatusBar()
    		menubar=wx.MenuBar()
    		first=wx.Menu()
    		first.Append(wx.ID_OPEN,"choose\tCTRL+o","this will choose a new directroy")
    		menubar.Append(first,"File")
    		self.SetMenuBar(menubar)
    		b2=wx.Button(panel,label="exec",pos=(20,30),size=(75,23))
    		self.Bind(wx.EVT_BUTTON, self.OnTrait,b2)
    		wx.EVT_MENU(self, wx.ID_OPEN, self.opendir)
    		self.Bind(wx.EVT_COMBOBOX, self.OnSelect)
    #*******************************************************************************************
    		self.count = 0
    		self.g1 = wx.Gauge(self, -1, 50, (110, 50), (250, 25))
    		#self.Bind(wx.EVT_TIMER, self.TimerHandler)
    		#self.timer = wx.Timer(self)
    		#self.timer.Start(100)
    		self.g1.SetRange(1000)
    #********************************************************************
    	def OnTrait(self, event):
    		liste=os.listdir(maissa.path1)
    		liste2=glob.glob(maissa.path1)
    		path_dest='C:\Users\User\Desktop\maissagoge.txt'
    		for i in range(len (liste)):
    			self.count = self.count + 1
    			self.g1.SetValue(self.count)
    			path_s=liste2[0]+'\\' + liste[i]
    			print path_s
    			X=path_s.endswith("_SCH.C") or path_s.endswith("_SCH.c")or path_s.endswith("_sch.c")or path_s.endswith("_sch.C")
    			if X == True:
    				fs = open(path_s, 'r')
    				fd=open(path_dest,'a')
    				lignes=fs.readlines()
    				for i in range(len(lignes)):
    					if "/*   extf" in lignes[i]:
    						fd.write (lignes[i]+'\n')
    						print lignes[i]
    					if "/*   input" in lignes[i]:
    						fd.write (lignes[i]+'\n')
    						print lignes[i]
    					if "/*   output" in lignes[i]:
    						fd.write (lignes[i]+'\n')
    						print lignes[i]
    					if "void" in lignes[i]:
    						fd.write (lignes[i]+'\n')
    						print lignes[i]
    		print "end"
    		c=self.count
    		print c
     
     
    	def OnSelect(self, event):
    		self.item = event.GetSelection()
    		print "lelement choisi est", item
    	def opendir(self, event):
    		dlg = wx.DirDialog(self, "Choose a directory:", style=wx.DD_DEFAULT_STYLE | wx.DD_NEW_DIR_BUTTON)
    		if dlg.ShowModal() == wx.ID_OK:
    			maissa.path1=dlg.GetPath()
    #***************************************************************************************************************
     
    if __name__=='__main__':
    	app=wx.PySimpleApp()
    	frame=maissa(parent=None,id=-1)
    	frame.Show()
    	app.MainLoop()

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    C'est la progression de ceci que tu veux ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	def OnTrait(self, event):
    		liste=os.listdir(maissa.path1)
    		liste2=glob.glob(maissa.path1)
    		path_dest='C:\Users\User\Desktop\maissagoge.txt'
    		for i in range(len (liste)):
    			self.count = self.count + 1
    			self.g1.SetValue(self.count)
    Je suppose que oui, je commencerai alors par mettre la taille de la liste comme valeur maximale de la gauge et puis lui renvoyer le nombre de fichiers traités

    Comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	def OnTrait(self, event):
    		liste = os.listdir(maissa.path1)
    		liste2 = glob.glob(maissa.path1)
    		path_dest = 'C:\Users\User\Desktop\maissagoge.txt'
                    self.g1.SetRange(len (liste))
    		for i in range(len (liste)):
    			self.g1.SetValue(i)
    Ah oui, faudrait que tu lises ça aussi:
    http://www.python.org/dev/peps/pep-0008/
    tu l'imprimes et tu le met sur ta table de chevet.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 151
    Par défaut ajouter un message dialogue
    merci sa a marché enfin :
    jai ajouté un message dialogue qui s'aafiche pour indiquer la fin d'execution de la fonction mais il ne s'affiche pas vraiment sur l'interface quand le traitement est terminé pas de message dialog qui s'affiche
    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
     
     
    import wx
    import os
    import glob
    import methode1
    class maissa(wx.Frame):
    	path1="path"
    	MyList = []
    	def __init__(self,parent,id):
     
    #******************************************************************************************
    		wx.Frame.__init__(self,parent,id,"la fenetre dessai",size=(400,300))
    		panel=wx.Panel(self)
    		status=self.CreateStatusBar()
    		menubar=wx.MenuBar()
    		first=wx.Menu()
    		first.Append(wx.ID_OPEN,"choose\tCTRL+o","this will choose a new directroy")
    		menubar.Append(first,"File")
    		self.SetMenuBar(menubar)
    		b2=wx.Button(panel,label="exec",pos=(20,30),size=(75,23))
    		self.Bind(wx.EVT_BUTTON, self.OnTrait,b2)
    		wx.EVT_MENU(self, wx.ID_OPEN, self.opendir)
    		self.Bind(wx.EVT_COMBOBOX, self.OnSelect)
    #*******************************************************************************************
    		self.count = 0
    		self.g1 = wx.Gauge(self, -1, 50, (110, 50), (250, 25))
    		#self.Bind(wx.EVT_TIMER, self.TimerHandler)
    		#self.timer = wx.Timer(self)
    		#self.timer.Start(100)
    		self.g1.SetRange(1000)
    #********************************************************************
    	def OnTrait(self, event):
    		listea=os.listdir(maissa.path1)
    		liste2=glob.glob(maissa.path1)
    		path_dest='C:\Users\User\Desktop\maissagoge.txt'
    		self.g1.SetRange(len (listea))
    		for i in range(len (listea)):
    			self.g1.SetValue(i)
    			if self.g1.getValue()==len (listea):
    				dlg = wx.MessageDialog(self, 'Fin dexecution', 'Talmud', wx.OK|wx.ICON_INFORMATION)
    				dlg.ShowModal()
    				dlg.Destroy()
    			path_s=liste2[0]+'\\' + listea[i]
    			print path_s
    			X=path_s.endswith("_SCH.C") or path_s.endswith("_SCH.c")or path_s.endswith("_sch.c")or path_s.endswith("_sch.C")
    			if X == True:
    				print X
    				f1=open(path_s, 'r')
    				f3=open(path_dest,'a')
    				lignes=f1.readlines()
    				liste=[]
    				liste4=[]
    				for cnt_1 in range(len(lignes)):
    					if 'void' in lignes[cnt_1] and '/*' not in lignes[cnt_1]:
    						cnt_2=cnt_1+1
    						while 'void' not in lignes[cnt_2]and '/*' not in lignes[cnt_2]:
    							if '()'in lignes[cnt_2]:
    								lignes[cnt_1]=lignes[cnt_1].replace("\n","").strip().replace('void',"").replace('()',"").replace(';',"")
    								liste.append(lignes[cnt_1])
    								lignes[cnt_2]=lignes[cnt_2].replace("\n","").strip().replace('void',"").replace('()',"").replace(';',"")
    								liste.append(lignes[cnt_2])
    								#f3.write(str(liste)+'\n')
    								liste4.append(liste)
    								print liste
    								liste=[]
    							cnt_2=cnt_2+1
    							if (cnt_2 > len(lignes)-1):
    								break
    						if 'void' in lignes[cnt_1+1] and '/*' not in lignes[cnt_1+1]:
    							lignes[cnt_1]=lignes[cnt_1].replace("\n","").strip().replace(';',"").replace('void',"").replace('()',"")
    							liste.append(lignes[cnt_1])
    							#f3.write(str(liste)+"\n")
    							print liste
    							liste4.append(liste)
    							liste=[]
     
     
    	def OnSelect(self, event):
    		self.item = event.GetSelection()
    		print "lelement choisi est", item
    	def opendir(self, event):
    		dlg = wx.DirDialog(self, "Choose a directory:", style=wx.DD_DEFAULT_STYLE | wx.DD_NEW_DIR_BUTTON)
    		if dlg.ShowModal() == wx.ID_OK:
    			maissa.path1=dlg.GetPath()
    #***************************************************************************************************************
     
    if __name__=='__main__':
    	app=wx.PySimpleApp()
    	frame=maissa(parent=None,id=-1)
    	frame.Show()
    	app.MainLoop()

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/03/2014, 14h55
  2. [XL-2007] Créer une boucle pour copie des tableaux de plusieurs feuilles sur une seule
    Par rvtoulon dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/09/2009, 17h12
  3. Réponses: 2
    Dernier message: 26/08/2009, 14h44
  4. Attendre l'execution d'une commande pour continuer
    Par sculpteur dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 27/09/2007, 15h46
  5. execution d'une gauge lors d'execution une requete
    Par lassmust dans le forum Delphi
    Réponses: 6
    Dernier message: 10/07/2006, 19h40

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