Partage
  • Partager sur Facebook
  • Partager sur Twitter

comment afficher smiley sous curses ?

Sujet résolu
    20 septembre 2014 à 20:59:02

    bonjour,

    comment peut on afficher le smiley blanc ou noir,et les coeur,pique,carreau,trefle, clef et double clef de musique etc. ?

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      20 septembre 2014 à 21:25:00

      Toujours pareil le code ascii va te sauver

      >>> for i in range(9780, 9801):
      ...     print(chr(i))
      ... 
      ☴
      ☵
      ☶
      ☷
      ☸
      ☹
      ☺
      ☻
      ☼
      ☽
      ☾
      ☿
      ♀
      ♁
      ♂
      ♃
      ♄
      ♅
      ♆
      ♇
      ♈
      

      les codes ASCII qui t’intéresses sont donc 9785, 9786 et 9787 pour tes smileys...



      • Partager sur Facebook
      • Partager sur Twitter
        20 septembre 2014 à 22:23:00

        bonjour,

        ceci marche en effet sous IDLE mais j'en ai besoin sous curses et là j'obtiens : 4,5,6,7,8,9

        puis : ; < = > ? @ A B C

                        screen.hline(5,10,chr(9780),12)
        		screen.hline(7,10,chr(9781),9)
        		screen.hline(9,10,chr(9782),15)
        		/.../
        		screen.hline(41,10,chr(9798),12)
        		screen.hline(43,10,chr(9799),12)
        		screen.hline(45,10,chr(9800),12)

        (edit: petit décalage bizard à la rédaction)

        -
        Edité par buffalo974 20 septembre 2014 à 22:24:38

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          20 septembre 2014 à 22:26:17

          enlève le chr pour voir
          • Partager sur Facebook
          • Partager sur Twitter
            21 septembre 2014 à 9:57:01

            Le résultat est le même.

            En regardant sur le net, j ' ai trouvé ça:

            How to make arrow symbols in terminal?
            -------
            import locale
            locale.setlocale(locale.LC_ALL, '')
            code = locale.getpreferredencoding()
            ARROW_UP = '\u2191'.encode(code)
            win.addstr(1, 1, ARROW_UP) # I think you might need addstr instead of addch for this; try it and see!
            -----------------
            

            J'obtiens alors un UnicodeEncodeError: 'charmap' codec can't encode caracters '\u2191' in position 0: character maps to <undefined>

            en cherchant sur stackoverflow, j'ai lu ceci:

            # -*- coding: utf-8 -*-
            import sys
            
            print sys.stdout.encoding
            print u"Stöcker".encode(sys.stdout.encoding, errors='replace')
            print u"Стоескер".encode(sys.stdout.encoding, errors='replace')
            
            --------------------
            
            if sys.stdout.encoding != 'cp850':
              sys.stdout = codecs.getwriter('cp850')(sys.stdout.buffer, 'strict')
            if sys.stderr.encoding != 'cp850':
              sys.stderr = codecs.getwriter('cp850')(sys.stderr.buffer, 'strict')
            
            ----------------
            
            # -*- coding: utf-8 -*-
            import sys
            import codecs
            sys.stdout = codecs.getwriter("iso-8859-1")(sys.stdout, 'xmlcharrefreplace')
            print u"Stöcker"                # works
            print "Stöcker".decode("utf-8") # works
            print "Stöcker"                 # fails

            Je m'y perd un peu , surtout que je suis sous curses et non pas directement sur IDLE.

            C'est un problème d'encodage je pense.

            • Partager sur Facebook
            • Partager sur Twitter
              21 septembre 2014 à 10:58:28

              Salut,

              Pour moi sous curses les éléments sont bien affichés (par contre ils sont tout petit). Voici le petit code que j'ai tapé:

              #Le module curses
              import curses
              
              #Initialise la fenêtre
              screen = curses.initscr()
              
              #On ne veut pas voir le curseur ni ce qui est tapé
              curses.noecho()
              curses.curs_set(False)
              
              #Efface l'écran à chaque appel
              screen.clear()
              
              #Affiche les éléments
              for i in range(80):
                  screen.insstr(1, i, chr(i+9750))
              
              
              #Boucle événementielle
              while True:
                  var = screen.getch()
              
                  if var == ord("q"):
                      break
              
              curses.endwin()

              PS: La fenêtre doit faire au moins 80 de longueur pour ne pas renvoyer une erreur

              • Partager sur Facebook
              • Partager sur Twitter
              Précepte: Le mieux est l'ennemi du bien
                21 septembre 2014 à 11:17:23

                je pense qu'on approche...voici ce que j'obtiens avec le code d' Olygrim:

                vue sur ma console

                peut être me manque t il quelquechose dans python ? 

                Python 3.3.5 (v3.3.5:62cf4e77f785, Mar  9 2014, 10:35:05) [MSC v.1600 64 bit (AMD64)] on win32

                -
                Edité par buffalo974 21 septembre 2014 à 11:18:39

                • Partager sur Facebook
                • Partager sur Twitter
                  21 septembre 2014 à 12:22:15

                  Bon pour le petit bout de code, j'obtiens les caractères suivants:

                  Sinon, voici le morceau de code que j'ai fait pour chercher les éléments que tu demandais (fenêtre 170*47 minimum):

                  import curses
                  
                  screen = curses.initscr()
                  
                  curses.noecho()
                  curses.curs_set(False)
                  
                  screen.clear()
                  
                  k=1000
                  for j in range(47):
                      k+=170
                      for i in range(170):
                          screen.insstr(j, i, chr(32+i+j+k))
                  
                  
                  #Boucle événementielle
                  while True:
                      var = screen.getch()
                  
                      if var == ord("q"):
                          break
                  
                  curses.endwin()

                  Ça va t'afficher pleins de caractères. Si ceux que tu cherches ne sont pas affichés, il faut que tu modifie la valeur de k (de 3000 en 3000 à peu près) à chaque fois que tu relance le code (toujours le bouton "q" pour quitter curses).

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Précepte: Le mieux est l'ennemi du bien
                    21 septembre 2014 à 13:00:47

                    salut oly, j'obtiens ceci:

                    Ce qui m' étonne , ce sont les Ô , Õ , Ò et autres motifs repetitifs : on dirait que l'ordinateur s'en sert à la place de caractères qu'il sait existant

                    mais qu'il ignore comment les afficher. Il y aurait bien un ou deux caractères exploitables sur la partie droite de la capture, mais je rate le

                    meilleur...

                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 septembre 2014 à 11:12:30

                      C'est le terminal par défaut de Windows (cmd.exe) qui est complètement daubé et ne sait pas gérer l'UTF-8 comme les reste des terminaux du monde.

                      Utilise un truc comme console2 à la place.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Zeste de Savoir, le site qui en a dans le citron !
                        23 septembre 2014 à 10:55:26

                        bonjour,

                        ça me fait pareil :

                        j'ai trouvé ceci : http://bugs.python.org/issue4787

                        Hi, in switching to Python 3.0 I've run into an issue with displaying
                        Unicode characters via curses. In Python 2.x a simple hello-world looks
                        like:It fails (printing gibberish to the console). It seems that the problem
                        is that the curses module isn't respecting the system's preferred
                        encoding (utf-8) which was set via the setlocale function (as per
                        instructions at
                        http://docs.python.org/dev/3.0/library/curses.html#module-curses).
                        et
                        http://bugs.python.org/issue6745
                        In Python 3, curses requires a str for addstr() where I think it should
                        take bytes instead. Otherwise it is impossible to output anything other
                        than ASCII (which is even more or less stated on top of curses'
                        documentation).
                        First, make sure that your Python3 build uses libncursesw and not
                        libncurses, because libncursesw supports unicode, whereas libncurses
                        doesn't... On UNIX, use the following command to check this:
                        
                        ldd $(./python -c "import _curses; print(_curses.__file__)")|grep curses
                        et https://docs.python.org/3.3/library/curses.html

                        Since version 5.4, the ncurses library decides how to interpret non-ASCII data using the <tt class="docutils literal" style="padding: 0px 1px; font-size: 15.5px; font-family: monospace, sans-serif; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background: #d6d6d6;">nl_langinfo</tt> function. That means that you have to call <tt class="xref py py-func docutils literal" style="padding: 0px 1px; font-size: 15.5px; font-family: monospace, sans-serif; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background: #d6d6d6;">locale.setlocale()</tt> in the application and encode Unicode strings using one of the system’s available encodings. This example uses the system’s default encoding:

                        import locale
                        locale.setlocale(locale.LC_ALL, '')
                        code = locale.getpreferredencoding()
                        

                        Then use code as the encoding for <tt class="xref py py-meth docutils literal" style="padding: 0px 1px; font-size: 15.5px; font-family: monospace, sans-serif; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background: #d6d6d6;">str.encode()</tt> calls.

                         Comme j'essaie de retarder le passage à pygame , j'essai d'avoir des ersatz de graphismes comme je peux...

                        • Partager sur Facebook
                        • Partager sur Twitter
                          23 septembre 2014 à 13:20:13

                          À ce compte-là, vu le temps que ça fait que tu fais du Python, je vois pas bien de raison de ne pas te pencher sur Pygame ou Kivy. Ça ne sera pas franchement plus dur.

                          BTW : Voir curses comme un ersatz de bibliothèque graphique est aussi pertinent que voir un cluster de Raspberry Pi comme un ersatz de processeur multi-coeur : ça peut sembler être la même chose en moins cher ou plus facile, mais c'est plus technique à utiliser, plus bas niveau, et ça n'est substituable dans aucun cas.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Zeste de Savoir, le site qui en a dans le citron !
                            24 septembre 2014 à 6:17:02

                            J'ai trouvé !

                            il faut créer un raccourci du cmd.exe qui se trouve ici:

                            C:\Windows\System32\cmd.exe

                            éditer le raccourci pour en modifier la cible:

                            C:\Windows\System32\cmd.exe /K chcp 65001

                            merci à tous

                            • Partager sur Facebook
                            • Partager sur Twitter

                            comment afficher smiley sous curses ?

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown