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

Python Discussion :

Gestion de l'affichage en mode texte


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 105
    Par défaut Gestion de l'affichage en mode texte
    Bonjour,

    Auriez-vous un lien vers la liste des codes de contrôle de l'affichage en mode texte, IDLE par ex (sous windows et donc hors console) ?
    J'aimerais pouvoir faire un affichage comme celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1   5    9
    2   6   10
    3   7   11
    4   8   12
    Affichage 1ere colonne, puis on remonte, affichage 2e colonne, puis on remonte affichage 3e colonne...
    Je ne veux pas de 1 5 9, puis 2, 7 11 et 4 8 12...

    J'espère avoir été clair

    Merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonjour,

    tu souhaiterais obtenir un "formatage" comme celui que tu présentes via un print dans un script ? pour une sortie écran ?

    si c'est le cas, il me semble que print ne gère que les affichages ligne à ligne et donc que la seule solution soit de faire de la façon même dont tu ne souhaites pas procéder

    si j'ai bien compris le sens de ta question, et que tu souhaites en fait faire une sortie console "évoluée", tu peux te pencher du côté de curses:

    http://docs.python.org/library/curses.html

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 105
    Par défaut
    Salut,

    Déjà une réponse ? Magnifique !
    Citation Envoyé par kango
    tu souhaiterais obtenir un "formatage" comme celui que tu présentes via un print dans un script ? pour une sortie écran ?
    Tout à fait !
    Oui, curses, c'est la première idée qui m'est venue, mais
    1. J'avais par le passé déjà essayé, sans succès
    2. J'ai cru comprendre (et lire, mais pas ici) que ça ne marchait pas avec Windows...
    Pour le saut de ligne, il y a bien \n,\t il doit bien y avoir des codes de contrôles autres, tels :
    remonter d'une ligne, retour arrière (sans effacement), avance (sans eff... etc...), non ?

    Merci quand même.

    @+

  4. #4
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Haha... c'est un défi pourtant intéressant... le but est de définir une (dans ce cas) fonction qui prendrait une chaine non-formatée, puis d'effectuer tout un travail dessus pour que cette fonction retourne une chaine "formatée"
    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
    chaine_brut='1 2 3 4 5 6 7 8 9 10 11 12'
    chaine_frmt=format_to_col(chaine_brut, 3)
    print chaine_frmt
    #afficherait
    01 05 09
    02 06 10
    03 07 11
    04 08 12
    #chaine_frmt ressemblerais à
    '01 05 09\n02 06 10\n03 07 11\n04 08 12'
     
    chaine_frmt=format_to_col(chaine_brut, 4)
    print chaine_frmt
    #afficherait
    01 04 07 10
    02 05 08 11
    03 06 09 12
    #chaine_frmt ressemblerais à
    '01 04 07 10\n02 05 08 11\n03 06 09 12'
    les seules choses que tu doives connaître sont split(), rjust(), et join(), ces trois fonctions sont des méthodes de chaines :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '01 02'.split(' ') -> ['01','02']
    NB: on ne travail pas du texte en programmation comme on travaille du texte dans un editeur (style word)

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    j'ai proposé de passer par curses (je n'ai pas testé sur windows je ne peux donc pas vraiment répondre à tes questions) parce que tu précisais dans ton message que tu ne voulais pas de "1 5 9, puis 2, 7 11 et 4 8 12", ce qui correspond à la réponse de N.tox.

    si tu ne veux pas de cette solution, c'est que j'imagine tu n'essaie pas d'afficher une série de nombre mais des informations de types divers qui vont être obtenues au fur et à mesure de ton programme.

    c'est à dire que tu ne connais pas la "chaine" complète à afficher avant de commencer à l'écrire ? j'ai bon ?

    par exemple, un script qui réaliserait 3 actions et dont tu voudrais indiquer l'avancement à l'utilisateur via un texte de statut. c'est à dire écrire ces trois lignes en tout premier lieu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    reading data        [   ]
    processing data     [   ]
    writing results     [   ]
    puis de remplir les [ ] au fur et à mesure du déroulement de ton code ?

    je m'étais amusé à faire ça en script shell en utilisant tput mais c'était sur Unix et pas sur Windows.

    après vérification, il semble en effet que curses ne fonctionne pas sur Windows (http://www.amk.ca/python/howto/curses/).

    ça ne répond pas directement à ta question, mais est il envisageable dans ton cas d'utiliser cygwin pour émuler un environnement Unix sur Windows (qui pourrait te permettre d'utiliser curses)

    sinon, il existe aussi ça:

    http://adamv.com/dev/python/curses/

    j'ai trouvé ça sur google je ne sais pas ce que ça vaut.

    et ici http://www.amk.ca/python/howto/curses/ ils parlent aussi d'un module Console mais le lien est mort :'(.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 105
    Par défaut
    Salut les gars,

    Vous êtes très forts et très accueillants...
    Oui, Kango, tu as tout bon...
    Dans le temps (il y a 25 ans), j'avais écrit un programme, avec le Basic de l'Amstrad CPC 6128, un prog de conjugaison que je voudrais porter sous Python.
    Je me lancerais bien en WxPython (j'ai testé Tkinter, mais chuis pas très à l'aise) pour traiter ça dans une interface graphique, mais je recule ce moment...

    En effet, je constate de plus en plus que sans utiliser de classes, je suis obligé parfois de "grimper aux murs", et j'ai la très nette impression que si je passe soit franchement à Tkinter, soit à WxPython, sans les Classes, je serais en plus obligé de marcher au plafond...
    Alors ?

    Alors, les Classes me posent, jusqu'à maintenant, des problèmes insurmontables : je ne sais pas ce que je dois mettre dedans ou pas, si les classes sont réservées pour diverses initialisations de données, si on peut effectuer des calculs à l'intérieur, si une variable initialisée dans une classe est accessible de n'importe quel point du prog y compris dans les def, etc...
    J'ai imprimé les pages de Swinnen qui traitent du sujet, je les ai imprimées, lues et relues sans être plus avancé.
    Et si je veux aller plus loin en Python, j'ai besoin de classes...
    J'ai même envisagé de changer de langage à cause de ça...

    Donc, disais-je, j'ai écrit (assez mal écrit avec mon oeil d'aujourd'hui !) un prog de conjugaison imbattable sans liste de verbes, comme le Bescherelle, et qui détermine notamment de lui-même (en 3/4 lignes) si un verbe en ir est du 2e ou 3e groupe (6 mois pour trouver l'algo) et l'affichage se faisait verticalement temps par temps, personne par personne...
    Je ne me voyais pas(et ne vois toujours pas) en cas d'affichage de 4 temps par écran :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
           Mode : Indicatif
    Présent           Imparfait
     Je
     tu
     Il
     
    Passé simple      Futur
    afficher ça ligne par ligne.... J'avais opté pour "tout le Présent", puis "out l'Imparfait", "tout le passé simple"...

    Vois-tu la problématique maintenant ?
    Hier soir, je les ai tous passés en revue de "\a" à "\z"... je me suis fait "jeter" avec "\x" (et j'ai pigé ensuite pourquoi) les deux seuls qui ont répondu à mes attentes sont "\n" et "\t", les autres soient ne donnent rien, soient des petits carrés avant l'affichage...

    J'ai quand même suivi ton lien mort, au cas où et j'ai fini par trouver ça :
    The Console module is a simple console driver for Windows 9X/NT/2K/XP. It also provides Python command line history and editing facilities for Windows platforms.
    http://effbot.org/media/downloads/co...in32-py2.6.exe
    Maintenant va falloir que je trouve une doc...
    [edit]Elle était sous mon nez )

    Merci encore,

    @+

    PS
    Cette histoire de prog de conjugaison n'est pas une simple "foucade", il était vraiment (et est toujours) très complet : Voix active, Voix passive, Forme pronominale, conjugaison à la demande ou sous contrôle du prog (avec 12 messages d'erreurs sur la localisation de la faute) et les règles de grammaire associées...
    Je l'avais retraduit proprement en Turbo Basic et maintenant, je voudrais le passer en Python...

Discussions similaires

  1. Jeu de la vie - Affichage en mode texte.
    Par Endori dans le forum Débuter
    Réponses: 6
    Dernier message: 08/12/2010, 11h22
  2. [Turbo Pascal] Unité complète de gestion d'écran en mode texte
    Par Alcatîz dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 11/11/2010, 15h55
  3. [texte] gestion de l'affichage d'une page
    Par guy2004 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 10/07/2005, 18h37
  4. affichage de tabulations en mode texte à partir de XSL
    Par closo dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 24/02/2004, 16h36
  5. Réponses: 5
    Dernier message: 11/12/2002, 12h31

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