Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3103 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [Python] Imprimer une liste dans une zone texte...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Python] Imprimer une liste dans une zone texte...

n°550082
Webman
Posté le 24-10-2003 à 22:25:56  profilanswer
 

Salut,
 
Je voudrais savoir que dois-je utiliser pour copier le contenu d'une liste dans une zone de texte. Je m'explique, je récupère dans une liste les imprimantes installées sur le système, puis ensuite je l'affiche dans l'interpréteur Python (grace à un Print), mais je viens de créer une interface graphique pour mon programme et je voudrais "imprimer" le contenu de cette liste dans une zone de texte (ou autre si Python le propose, un label par exemple, ... sachant que ca tiens sur plusieurs lignes).
 
J'espère avoir été clair :) sinon n'hésitez pas à me poser des questions.
 
Voilà mon code pour le moment:
 

Code :
  1. # -*- coding: cp1252 -*-
  2. import win32print
  3. from Tkinter import *
  4. class printer:
  5.     def __init__(self):
  6.         self.fenetre = Tk()
  7.         self.fenetre.title("Detect Printer" )
  8.         font10 = ('Times', 15, 'italic')
  9.         self.texte1 = Label(self.fenetre, text = "Logiciel de détection d'imprimantes", fg='red', font = font10)
  10.         self.texte1.pack()
  11.         self.listeL = []
  12.         self.listeN = []
  13.        
  14.     def listePrinter(self):
  15.        
  16. #Recherche des imprimantes
  17.         try:
  18.             for (Flags,pDescription,pName,pComment) in list(win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL,None,1)):
  19.                 self.listeL.append(pName)
  20.        
  21.         except:
  22.             print '    >> Aucune imprimante locale détectée.'
  23.         try:   
  24.             for (Flags,pDescription,pName,pComment) in list(win32print.EnumPrinters(win32print.PRINTER_ENUM_CONNECTIONS,None,1)):
  25.                 self.listeN.append(pName)
  26.         except:
  27.             print '    >> Aucune imprimante réseau detectée'
  28. #Impression des deux listes
  29.         print 'Liste des imprimantes locales:'
  30.         for i in range(len(self.listeL)):
  31.             print '    >>',self.listeL[i]
  32.         print ""
  33.         print 'Liste des imprimantes réseau:'
  34.         for j in range(len(self.listeN)):
  35.             print '    >>',self.listeN[j]
  36.  
  37. if __name__ == '__main__':
  38.     a = printer()
  39.     a.listePrinter()
  40.     a.fenetre.mainloop()      #Je suis obligé de rajouter le mainloop() içi car dans le def__init__ ca provoque un comportement étrange: tant que la fenêtre "fenetre" n'est pas fermée la liste des imprimantes ne s'affiche pas dans l'IDLE.


Message édité par Webman le 25-10-2003 à 10:35:41
mood
Publicité
Posté le 24-10-2003 à 22:25:56  profilanswer
 

n°550187
Webman
Posté le 25-10-2003 à 09:30:55  profilanswer
 

Un petit UP, je précise que dans mon code pour l'instant "j'imprime" les listes dans l'interpréteur mais que mon but est bien de les "imprimer" dans la fenêtre fenetre.
 
:hello:
 
EDIT: je viens de farfouiller la doc et je pense que je dois utiliser le "composant" Message  pour afficher mon texte, car je veux afficher un texte multi-lignes sans que celui ci soit modifiable.


Message édité par Webman le 25-10-2003 à 10:06:10
n°550214
Webman
Posté le 25-10-2003 à 11:03:33  profilanswer
 

J'ai trouvé une méthode grace aux listbox, ca marche mais le résultat n'est pas encore trés esthétique... donc a travailler encore :d
 

Code :
  1. # -*- coding: cp1252 -*-
  2. #Programme de détection des imprimantes locales et réseau sous Windows...
  3. from Tkinter import *
  4. import win32print
  5. class printer:
  6.     def __init__(self):
  7.         self.fenetre = Tk()
  8.         self.fenetre.title("Detect Printer" )
  9.         font10 = ('Arial', 10, 'bold')
  10.         self.texte1 = Label(self.fenetre, text = "Logiciel de détection d'imprimantes", fg='black', font = font10)
  11.         self.texte1.pack()
  12.         self.listeL = []
  13.         self.listeL.append("Imprimantes locales: " )
  14.         self.listeN = []
  15.         self.listeN.append("Imprimantes réseau: " )
  16.         self.bouttonQuitter = Button(self.fenetre, text ="QUITTER", command = self.fenetre.destroy)
  17.         self.bouttonQuitter.pack(side = BOTTOM)
  18.        
  19.        
  20.     def listePrinter(self):
  21.        
  22. #Recherche des imprimantes
  23.         try:
  24.             for (Flags,pDescription,pName,pComment) in list(win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL,None,1)):
  25.                 self.listeL.insert(0, pName)
  26.                 #self.listeL.reverse() Utile uniquement si on utilise juste au dessus append() à la place de insert()
  27.                
  28.        
  29.         except:
  30.             print '    >> Aucune imprimante locale détectée.'
  31.         try:   
  32.             for (Flags,pDescription,pName,pComment) in list(win32print.EnumPrinters(win32print.PRINTER_ENUM_CONNECTIONS,None,1)):
  33.                 self.listeN.insert(0, pName)
  34.                 #self.listeN.reverse() Utile uniquement si on utilise juste au dessus append() à la place de insert()
  35.                
  36.         except:
  37.             print '    >> Aucune imprimante réseau detectée'
  38. #Impression des deux listes dans les listbox
  39.         listBoxLoc = Listbox(self.fenetre)
  40.         for i in self.listeL :
  41.             listBoxLoc.insert(0, i)
  42.             listBoxLoc.pack(side = LEFT)
  43.         listBoxNet = Listbox(self.fenetre)
  44.         for i in self.listeN:
  45.             listBoxNet.insert(0, i)
  46.             listBoxNet.pack(side = RIGHT)
  47.  
  48. if __name__ == '__main__':
  49.     a = printer()
  50.     a.listePrinter()
  51.     a.fenetre.mainloop()


Message édité par Webman le 25-10-2003 à 16:03:53
n°550596
Webman
Posté le 26-10-2003 à 09:44:46  profilanswer
 

:bounce:
 
Alors pas de meilleure méthode que les listbox ?
 
:hello:

n°550983
e_esprit
Posté le 26-10-2003 à 19:27:21  profilanswer
 

Bah je suis pas un expert en TK, mais je cerne pas bien ton probleme...
Tu peux tout a fait utiliser une case de saisie de texte multi-lignes non editable, non ? :??:

n°551184
Webman
Posté le 27-10-2003 à 08:04:39  profilanswer
 

Bah oui, pourquoi pas, mais je connais absolument pas (ou du moins trop peu Tkinter) donc je ne sais pas comment le faire... de plus la doc sur Tkinter est pas des plus claires à ce sujet), donc je me disais qu'il doit surement avoir ici quelqu'un qui pourrait m'expliquer cela en 2 lignes :)
 
:hello: et merci de ta réponse ;)

n°551497
e_esprit
Posté le 27-10-2003 à 14:08:56  profilanswer
 

Sinon, apres consult rapide d'une doc, le Label doit marcher... t'as essayé ?

n°552160
Webman
Posté le 28-10-2003 à 09:08:28  profilanswer
 

Non je n'ai pas essayé le label car je cherchais un objet multi-lignes, mais je vais essayer quand même l'essayer :jap:
 
:hello:


Message édité par Webman le 28-10-2003 à 09:08:49
n°553330
e_esprit
Posté le 29-10-2003 à 10:46:22  profilanswer
 

webman a écrit :

Non je n'ai pas essayé le label car je cherchais un objet multi-lignes, mais je vais essayer quand même l'essayer :jap:
 
:hello:


Bah le label, avec des '\n' entre tes lignes peut peut-etre devenir muti-lignes (je dis ca mais je n'ai pas testé !).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [Python] Imprimer une liste dans une zone texte...

 

Sujets relatifs
récup d'un valeur de formulaire ( ! liste) en php[MySQL] sortir la liste des bases accessibles à un user?
comment killer un thread en python?[PHP] Passer un texte avec un '&' comme paramètre
[C] Producteur/consommateur avec threads en C sur liste chainée...Fonction texte
Réaliser un petit traitement de texte ?comment importer dynamiquement un nouveau module dans un prog python?
[PHP/MySQL] Fichiers Texte ou Base de données ?formatage de texte avec include[résolu]
Plus de sujets relatifs à : [Python] Imprimer une liste dans une zone texte...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR