J'essaie d'obtenir un script de Curseys simple à exécuter en utilisant Python (avec Pycharm 2.0).
Ceci est mon script:
import curses
stdscr = curses.initscr()
curses.noecho()
curses.cbreak()
stdscr.keypad(1)
while 1:
c = stdscr.getch()
if c == ord('p'): print("I pressed p")
Elif c == ord('q'): break
curses.nocbreak(); stdscr.keypad(0); curses.echo()
curses.endwin()
Quand j'exécute cela de mon IDE (Pycharm 2), j'obtiens l'erreur suivante:
[.____]
_curses.error: setupterm: could not find terminal
Process finished with exit code 1
Si j'exécute le script de bash, il sera simplement bloqué dans la boucle tandis que la boucle ne réagit pas à appuyer sur P ou Q.
Toute aide serait appréciée.
Vous devez définir des variables envioment TERM
et TERMINFO
, comme celui-ci:
export TERM=linux
export TERMINFO=/etc/terminfo
Et, si votre appareil n'a pas ce dir (/etc/terminfo
), faites-la et copiez la base de données TerminFo.
Pour les terminaux "Linux" et "PCANSI", vous pouvez télécharger la base de données:
Aller à la configuration de course/débogage (celui à côté du bouton d'exécution Pycham). Coller sur la prise d'émulation de la console de sortie. Ensuite, vous pourrez exécuter votre programme avec le bouton Run.
J'ai trouvé cette question lors de la recherche d'exemples car j'apprends également à utiliser des malédictions, donc je ne sais pas grand chose à ce sujet. Je sais que cela fonctionne cependant:
import curses
try:
stdscr = curses.initscr()
curses.noecho()
curses.cbreak()
stdscr.keypad(1)
while 1:
c = stdscr.getch()
if c == ord('p'):
stdscr.addstr("I pressed p")
Elif c == ord('q'): break
finally:
curses.nocbreak(); stdscr.keypad(0); curses.echo()
curses.endwin()
J'ai aussi ajouté l'essai: Enfin: assurez-vous d'obtenir le terminal à son apparition d'origine, même si quelque chose de simple passe mal à l'intérieur de la boucle.
Vous devez utiliser l'addstr pour vous assurer que le texte va être affiché à l'intérieur de la fenêtre.
J'avais le même problème. Voir Programmation des malédictions avec Python - Démarrage et fin d'une application de malédiction .
Il y a une fonction curses.wrapper()
qui simplifie le processus de démarrage/de fin d'une application de malédiction.
Voici l'exemple du Python doc:
[.____] Du wrapper d'importation de malédictions Def Main (STDSCR): # Écran clair [.____] () # Cela soulève ZerodiVisionError lorsque je == 10. [.____] Pour i dans la plage (0, 11): [.____] V = I-10 [.____] (i, 0 , '10 divisé par {} est {} '. Format (V, 10/V)) [.____] [.____] [. ____] STDSCR.Refresh () [.____] () Wrapper (principal)
Si vous utilisez des macos et que vous exécutez Pycham, vous devrez définir des variables d'environnement à partir du IDE =, pour une portée d'exécution.
Modifier les configurations -> Variables d'environnement
ajoutez ensuite les paires de valeur de nom ci-dessous
Terme Linux
Terminfo/etc/ZSH
Ce qui précède est équivalent à l'exportation d'un environnement variable de la console qui se fait comme ça
$ export TERM=linux
$ export TERMINFO=/bin/zsh
la valeur par défaut du terme est Xterm, d'autres valeurs sont [Konsole, RXVT] RXVT par exemple est souvent construite avec support pour 16 couleurs. Vous pouvez essayer de définir le terme à RXVT-16Color.
/ bin/zsh est le chemin de l'application terminale que j'utilise dans Mac.
C'est comme si vous indiquez à votre programme que vous vous connecterez à Linux (terme) comme le terminal que vous pouvez trouver à/bin/zsh. Pour utiliser une coquille bash, cela pourrait être quelque chose comme/bin/bash.
Vous verrez cette erreur si vous utilisez le ralenti. C'est à cause de la redirection par défaut de l'entrée/de sortie de Highle. Essayez d'exécuter votre programme de la ligne de commande. python3 <filename>.py