Bonjour
Je suis en train de faire une application console et je voudrai savoir si
il est possible d'ajouter des couleurs ainsi que l'auto-complémentation.
merci d'avance
Bonjour
Je suis en train de faire une application console et je voudrai savoir si
il est possible d'ajouter des couleurs ainsi que l'auto-complémentation.
merci d'avance
c'est surtout au niveau de la console elle même qu'il faut gérer ça, à mon avis...
Si t'es sous linux, il ne devrait pas être très long de localiser les fichiers traitants de la coloration de la sortie de certaines commandes...
Salut
Comme dit N.Tox, sous linux c'est pas trop difficile.
Le tout est que la console ouverte soit un tty (soit la grande majorité des consoles actuelles)
Les codes couleurs sont de la forme "\x1b[%c;%dm", où %c est un chiffre entre 31 et 39 (environ, à vérifier), correspondant à la couleur, et %d varie entre 0 et 9, et fait des variations comme gras, normal, surligné, souligné, barré etc... Il y avait même un clignottant, mais je ne remets pas la main dessus
Exemples:
\x1b[31;1mHello écrira "Hello" en rouge gras.
Tu peux remplacer \x1b par \033, c'est le même nombre respectivement en hexa et octal.
Pour ce qui est du positionnement du curseur, c'est presque pareil:
print("\x1b[1;2HSalut") positionnera "Salut" sur la 2ième colonne de la première ligne.
Il reste un caractère utile à connaître, clear, et le voici: \x1b[2J
J'ai trouvé un lien expliquant comment modifier la console dos.
http://code.activestate.com/recipes/496901/
l'exemple utilise ctype. J'ai tous les élément pour la couleur
Sa va mettre utile pour l'auto-complémentation.Il reste un caractère utile à connaître, clear, et le voici: \x1b[2J
Merci beaucoup
bonsoir,
tu as également la librairie curses de python dans la librairie standard qui sert à faire des entrées-sorties texte évoluées sur la console.
Une classe que j'ai faite qui gère les couleurs de la console si ca peut t'aider
http://snippets.dzone.com/posts/show/6944
Tu a juste a fairepar exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part UnixConsoleStyler.apply_style("red")
J'imagine que je vais avoir besoin d'effacer un caractère pour l'auto-complémentation.Ca fait un clear de tout l'écran hein
En plus c'est sous linux. Il est très fort probable que ce soit différent sous dos.
Si la personne saisi tab. Il faut effacer la tabulation et écrire la suite du mot.
afficher le caractère Backspace me semble une solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 >>> print 'sl\t\x08t' slt
merci kedareUne classe que j'ai faite qui gère les couleurs de la console si ca peut t'aider
Le problème s'est que sa me fait pas mal de module Je voulait
faire quelque chose de léger et multi-plateforme
Je trouve pas ca spécialement lourd
La gestion de la console est totalement différente sous Windows, donc c'est compliqué de faire quelque chose de compatible
Pourquoi ne pas faire une 'pseudo-console'. Par exemple un wxFrame avec les wx-widgets, ne contenant qu'un contrôle type 'zone de texte'. On peut faire ça avec boa constructor en deux temps trois mouvements. Le résultat sera indépendant de l'OS.
Ce qu'on trouve est plus important que ce qu'on cherche.
Maths de base pour les nuls (et les autres...)
Il suffit de faire deux classes différentes: une pour windows, une pour linux. Et pour les perfectionnistes, l'interface qui va avec :p
@Zavonen: il est possible que l'application doive pouvoir être exécutée dans un environnement de console. Auquel cas la solution GUI est impossible.
Très bonne idée autrement
Pour l'auto-complémentation j'ai fait ce petit prototype
faut que je mette en place les "Backspace" pour effacer un caractère
sur une ligne"
sous Unix je doit remplacer
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 import sys import msvcrt ESPACE = "\x20" ENTREE = "\x0D" TAB = "\x09" saisie = '' mot = '' #L'application se termine quant on saisi exit sur une ligne. while mot != ENTREE + "exit" + ENTREE : saisie = msvcrt.getch() #Recupere un seul caractere mot += saisie if mot.endswith( ESPACE ) : mot = '' #selon par quoi debute le mot on complete if mot.endswith( "SE" + TAB ) : sys.stdout.write( "LECT" ) mot = '' elif mot.endswith( "FR" + TAB ) : sys.stdout.write( "OM" ) mot = '' elif mot.endswith( ENTREE ) : mot = ENTREE print else : sys.stdout.write( saisie )
msvcrt.getch() par sys.stdin.read(1)
avec au début du code
J'espère trouver plus simple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 import sys, tty, termios fd = sys.stdin.fileno() old_settings = termios.tcgetattr(fd) tty.setraw(sys.stdin.fileno())
Et pourquoi pas utilisé un jolie module python pour l'autocomplétion
http://docs.python.org/library/readline.html
j'aurai aimé avoir une solution sans importation sélectives. J'ai essayé de faireEt pourquoi pas utilisé un jolie module python pour l'autocomplétion
tout avec ctype mais getch n'existe pas.
j'ai trouvé ici un code pour avoir un getch cross-plateforme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 >>> import ctypes >>> libc = ctypes.cdll.msvcrt >>> getch = libc.getch Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python25\lib\ctypes\__init__.py", line 361, in __getattr__ func = self.__getitem__(name) File "C:\Python25\lib\ctypes\__init__.py", line 366, in __getitem__ func = self._FuncPtr((name_or_ordinal, self)) AttributeError: function 'getch' not found >>>
http://dis.4chan.org/read/prog/1236990226
après, la suite de mon code sera la même peut importe l'OS, se sera plus simple à maintenir.
Merci à tous.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager