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 :

mise a jour d'une liste d'une listbox


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 mise a jour d'une liste d'une listbox
    bonjour,
    jai un gros probléme qui peut etre évident pour certain mais je suis débutante en wxpython
    en fait sur mon interface jai une list box qui initialement nulle.apres avoir appuyé sur un bouton de traitement je vais génerer une liste l2.je veut remplir la liste du list box par les elements de l2.je ne sais pas comment faire la mise a jour
    voici le code que j'ai écrit:
    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
     
    import wx
    import os
    import glob
     
    class maissa(wx.Frame):
    	path1="path"
    	licenseText = "blah " * 250 + "\n\n" +"yadda " * 100
    	MyList=[]
    	def __init__(self,parent,id):
    		wx.Frame.__init__(self,parent,id,"la fenetre dessai",size=(300,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)
    		boutton2=wx.Button(panel,label="afficher",pos=(30,10),size=(60,60))
    		boutton3=wx.Button(panel,label="traitement",pos=(100,10),size=(60,60))
    		cnt=wx.ListBox(panel,-1,(160,20),(80,60),maissa.MyList,wx.LB_SINGLE)
    		self.Bind(wx.EVT_BUTTON,self.essai,boutton2)
    		self.Bind(wx.EVT_BUTTON,self.traitement,boutton3)
    		wx.EVT_MENU(self, wx.ID_OPEN, self.opendir)
    	def traitement(self,event):
    		liste=os.listdir(maissa.path1)
    		liste2=glob.glob(maissa.path1)
    		liste1=[]
    		liste_tache=[]
    		for i in range(len (liste)):
    			if liste[i]=="KRN_ASW.H":
    				path_s=liste2[0]+'\\' + liste[i]
    				break
    		f=open(path_s,'r')
    		lignes=f.readlines()
    		for k in range(len(lignes)):
    			if '#undef' in lignes[k]:
    				lignes[k]=lignes[k].replace('#undef',"")
    				ch=lignes[k]
    				liste1=ch.split('_')
    				a=liste1[-2]
    				c=str(a).isdigit()
    				if (c==True):
    					lignes[k]=lignes[k].replace(a,"")
    					print lignes[k]
    					liste_tache.append(lignes[k])
    				else:
    					liste_tache.append(lignes[k])	
    		l2=list(set(liste_tache))
    		print len(l2)
    		print len(liste_tache)
    		for k in range(len(l2)):
    			print l2[k]
    		for l in l2:
    			maissa.MyList.append(l)
    			print "*************************"
     
     
     
    	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()
    			#return path1
    		#opendir.Destroy()
     
    	def essai(self,event):
    		print maissa.path1
    		liste=os.listdir(maissa.path1)
    		liste2=glob.glob(maissa.path1)
    		liste4=[]
    		liste3=[]
    		for i in range(len (liste)):
    			path_s=liste2[0]+'\\' + liste[i]
    			if (('_fct' in liste[i]) and (liste[i].endswith('.c'))or ('_FCT' in liste[i])) and (liste[i].endswith('.C')):
    				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 ">>>"+path_s
    if __name__=='__main__':
    	app=wx.PySimpleApp()
    	frame=maissa(parent=None,id=-1)
    	frame.Show()
    	app.MainLoop()

  2. #2
    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
    Salut,

    C'est quoi une listbox ? c'est l'équivalent d'une comboBox ?

    D'après ce qu'il est dit ici:
    http://www.wxpython.org/docs/api/wx.ListBox-class.html

    il y a une méthode 'InsertItems(*args, **kwargs)' où tu mets ta liste en premier argument et l'index où tu veux insérer ta liste en deuxième, dans ton cas ce sera 0

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 151
    Par défaut RE InsertItems probléme
    salut, jai utilisé la fonction isertitems comme vous m'avez dit mais jai un problème lors de la compilation il me dit:maissa object has no attribut cnt;cnt cest une instance de listebox que je l'ai faite dans la fonction def init vous trouvez le code ci dessous:
    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
     
    import wx
    import os
    import glob
     
    class maissa(wx.Frame):
    	path1="path"
    	licenseText = "blah " * 250 + "\n\n" +"yadda " * 100
    	MyList=[]
     
    	def __init__(self,parent,id):
    		wx.Frame.__init__(self,parent,id,"la fenetre dessai",size=(300,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)
    		boutton2=wx.Button(panel,label="afficher",pos=(30,10),size=(60,60))
    		boutton3=wx.Button(panel,label="traitement",pos=(100,10),size=(60,60))
    		cnt=wx.ListBox(panel,-1,(160,20),(80,60),maissa.MyList,wx.LB_SINGLE)
    		self.Bind(wx.EVT_BUTTON,self.essai,boutton2)
    		self.Bind(wx.EVT_BUTTON,self.traitement,boutton3)
    		wx.EVT_MENU(self, wx.ID_OPEN, self.opendir)
    	def traitement(self,event):
    		liste=os.listdir(maissa.path1)
    		liste2=glob.glob(maissa.path1)
    		liste1=[]
    		liste_tache=[]
    		for i in range(len (liste)):
    			if liste[i]=="KRN_ASW.H":
    				path_s=liste2[0]+'\\' + liste[i]
    				break
    		f=open(path_s,'r')
    		lignes=f.readlines()
    		for k in range(len(lignes)):
    			if '#undef' in lignes[k]:
    				lignes[k]=lignes[k].replace('#undef',"")
    				ch=lignes[k]
    				liste1=ch.split('_')
    				a=liste1[-2]
    				c=str(a).isdigit()
    				if (c==True):
    					lignes[k]=lignes[k].replace(a,"")
    					print lignes[k]
    					liste_tache.append(lignes[k])
    				else:
    					liste_tache.append(lignes[k])	
    		l2=list(set(liste_tache))
    		print len(l2)
    		print len(liste_tache)
    		for k in range(len(l2)):
    			print l2[k]
    		cnt.InsertItems(l2,0)
     
     
    	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()
    			#return path1
    		#opendir.Destroy()
     
    	def essai(self,event):
    		print maissa.path1
    		liste=os.listdir(maissa.path1)
    		liste2=glob.glob(maissa.path1)
    		liste4=[]
    		liste3=[]
    		for i in range(len (liste)):
    			path_s=liste2[0]+'\\' + liste[i]
    			if (('_fct' in liste[i]) and (liste[i].endswith('.c'))or ('_FCT' in liste[i])) and (liste[i].endswith('.C')):
    				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 ">>>"+path_s
    if __name__=='__main__':
    	app=wx.PySimpleApp()
    	frame=maissa(parent=None,id=-1)
    	frame.Show()
    	app.MainLoop()

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 151
    Par défaut RE solution
    ah c'est bon sa a marché finalement

    il suffirer d'ajouter un self.cnt au lieu de cnt tout court
    merci

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 151
    Par défaut COMBOBOX insert items
    bonjour,
    j'ai voulu remplacer la list box par un combobox
    mais un message d'erreur s'affiche pour l'instruction INSERT ITEMS:can't insert items in sorted control
    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
     
    import wx
    import os
    import glob
     
    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="taitement",pos=(20,30),size=(75,23))
    		self.cb = wx.ComboBox(panel, 500, "Les taches", (0, 50), (111, 21), maissa.MyList,wx.CB_DROPDOWN| wx.TE_PROCESS_ENTER| wx.CB_SORT)
    		self.cb.Show(False)
    		self.Bind(wx.EVT_BUTTON, self.OnTrait,b2)
    		wx.EVT_MENU(self, wx.ID_OPEN, self.opendir)
    	def OnTrait(self, event):
    		liste=os.listdir(maissa.path1)
    		liste2=glob.glob(maissa.path1)
    		liste1=[]
    		liste_tache=[]
    		for i in range(len (liste)):
    			if liste[i]=="KRN_ASW.H":
    				path_s=liste2[0]+'\\' + liste[i]
    				break
    		f=open(path_s,'r')
    		lignes=f.readlines()
    		for k in range(len(lignes)):
    			if '#undef' in lignes[k]:
    				lignes[k]=lignes[k].replace('#undef',"")
    				ch=lignes[k]
    				liste1=ch.split('_')
    				a=liste1[-2]
    				c=str(a).isdigit()
    				if (c==True):
    					lignes[k]=lignes[k].replace(a,"")
    					print lignes[k]
    					liste_tache.append(lignes[k])
    				else:
    					liste_tache.append(lignes[k])
    		l2=list(set(liste_tache))
    		self.cb.Show(True)
    		self.cb.InsertItems(l2,0)
     
    	def OnSelect(self, event):
    		item = event.GetSelection()
    		print 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()

  6. #6
    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
    Peux pas tester parce que ton code à besoin de trucs qui sont sur ta machine, mais essayes en supprimant l' argument wx.CB_SORT

    Je suce ça de mon pouce, donc c'est pas garantit, mais d'après le message d'erreur ...

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

Discussions similaires

  1. [Lisp][IA] Supprimer une liste d'une liste de listes
    Par Superleo2999 dans le forum Lisp
    Réponses: 5
    Dernier message: 22/03/2010, 10h51
  2. Réponses: 7
    Dernier message: 02/06/2009, 13h52
  3. Réponses: 12
    Dernier message: 12/09/2007, 16h28
  4. Appel d'une liste dans une liste (JSTL)
    Par abalgue dans le forum Hibernate
    Réponses: 4
    Dernier message: 15/06/2007, 10h56
  5. STL : retirer une liste d'une liste
    Par DEVfan dans le forum SL & STL
    Réponses: 13
    Dernier message: 05/01/2007, 20h49

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