Un moyen d'effacer la fenêtre IDLE de python?

154

Je sais qu'il existe un sujet similaire à propos de la console python, mais je ne sais pas s'ils sont identiques. J'ai essayé le système ("clear") et cela n'a pas fonctionné ici.

Comment effacer la fenêtre IDLE de python?

dévoré d'elysium
la source
10
ce n'est pas un doublon, OP demande comment effacer le shell IDLE, pas la console
Moha le chameau tout-puissant
1
La raison pour laquelle cela ne fonctionne pas est que Python démarre une nouvelle session shell et y exécute la commande clear. Cela explique également pourquoi cdne fonctionne pas system.os.
jkd
14
Maintenez enfoncé ctrl + jpendant un moment, puis appuyez sur Entrée, ce sera le meilleur moyen
ytpillai
1
@ytpillai, Ah, mais cela me donne l'invite en bas. Une solution, sans aucun doute, mais qui apporte quand même une certaine commodité.
John Red

Réponses:

97

Les "cls" et "clear" sont des commandes qui effaceront un terminal (c'est-à-dire une invite DOS ou une fenêtre de terminal). D'après votre capture d'écran, vous utilisez le shell dans IDLE, qui ne sera pas affecté par de telles choses. Malheureusement, je ne pense pas qu'il existe un moyen d'effacer l'écran en IDLE. Le mieux que vous puissiez faire est de faire défiler l'écran de nombreuses lignes, par exemple:

print "\n" * 100

Bien que vous puissiez mettre cela dans une fonction:

def cls(): print "\n" * 100

Et puis appelez-le si nécessaire comme cls()

Brian
la source
13
Il efface l'écran mais vous obtenez toujours l'invite ">>>" à la dernière ligne plutôt en haut, ce qui, je suppose, le rend moins inefficace ... toujours +1 pour un écran clair
Invictus
10
Python 3.4.2 - J'ai dû mettre "\ n" et * 100 entre parenthèses, donc:print ("\n" * 100)
cody.codes
4
Cela n'effacera pas l'écran, je peux toujours faire défiler vers le haut!
esoterik
2
ctrl + jfonctionne également. Cela pourrait être utile, y compris. stackoverflow.com/a/11993793/4871483
ytpillai
1
Notez qu'il s'agit d'une balise python. Non spécifique à la version. Pour tous les utilisateurs de python 3.x, c'estprint('\n'*100)
Luke
83

os.system('clear')fonctionne sous linux. Si vous exécutez Windows, essayez à la os.system('CLS')place.

Vous devez d'abord importer le système d'exploitation comme ceci:

import os
Nadia Alramli
la source
13
Le système os.system ('CLS') fonctionne sous Windows. (Python 2.6). L'écran résultant est effacé, affichant uniquement un "0", qui, je suppose, est la valeur de retour pour CLS, en haut. La ligne suivante a l'invite >>>.
mjv le
35
cela fait un appel os à cls dans une invite de commande externe et n'interagit pas avec Idle
bunglestink
15
idle n'est pas une fenêtre de console. Clear et cls fonctionnent sur les fenêtres de console / terminal.
Bryan Oakley
16
La question est `` Effacer l'écran au ralenti '' les méthodes ci-dessus ne fonctionnent certainement pas sur mon ordinateur
Élektra
21
Pourquoi est-ce voté? Cela ouvrira une nouvelle invite de commande, l'
effacera
39

La plupart des réponses, ici effacent l'écran d'invite DOS, avec des commandes d'effacement, ce qui n'est pas la question. D'autres réponses ici, consistaient à imprimer des lignes vierges pour montrer un effet de compensation de l'écran.

La réponse la plus simple à cette question est

Il n'est pas possible d'effacer le shell Python IDLE sans une intégration de module externe. Si vous voulez vraiment obtenir une coquille vierge pure et fraîche, fermez simplement la coquille précédente et exécutez-la à nouveau

Abdul Rehman
la source
3
C'est une bonne réponse directe et pratique à cette question; fermer inactif, laisser le fichier ouvert, réexécuter le fichier et inactif a maintenant un nouvel écran.
Mike_K
@Mike_K, cela peut être utile, mais pas jamais. En ce moment, j'ai un écran divisé (un livre <|> inactif). Lorsque je réexécute le Idle, le nouvel écran arrive dans la position / dimensions par défaut. Donc, cela deviendra très ennuyeux.
sdlins
38

ctrl+ Lefface l'écran sur Ubuntu Linux.

shxfee
la source
Aussi sur Red Hat / Fedora / CentOS
DtechNet
1
Sur Windows également, si vous utilisez IDLEx. À votre santé! Tellement heureux d'avoir enfin une solution simple!
John Red
Ne fonctionne pas dans Ubuntu 18.04. Le moins pire ici est l'utilisation CTRL+ Jplusieurs fois.
sdlins
@slinstj qui l'a complètement fermé sur Windows
Mubarek
Ajouté à mon hack d'aujourd'hui! Fonctionne aussi comme un charme sous MacOS!
xtornasol512
21

Une extension pour effacer le shell peut être trouvée dans Issue6143 en tant que "demande de fonctionnalité". Cette extension est incluse avec IdleX .

Roger
la source
1
C'est une brillante extension de Python Idle. Merci beaucoup!
Indrajit
19
>>> import os

>>>def cls():
...    os.system("clear")
...
>>>cls()

Cela fait parfaitement. Pas de '0' imprimé non plus.

Derk Smith
la source
Nice, simple, fait ce qu'il dit. Ou après import ossimplement taper os.system("clear")bien que la fonction soit pratique si vous avez souvent besoin d'effacer l'écran.
Dave Everitt
1
os.system ("clear") a fonctionné. Cela fonctionne pour moi, mais je dois taper "cls ()"
j0h
Quand j'ai essayé cela, la ligne de commande a renvoyé <function cls at 0x024D25D0> et la console n'a pas été
effacée
Meilleure réponse jusqu'à présent
bonjour123
@ericgrosse vous devez taper cls (), pas cls
Banoona
9

Il ne semble pas y avoir de moyen d'effacer le tampon «shell» IDLE.

Mark Ribau
la source
1
bugs.python.org/issue6143 a une extension pour effacer le shell, et est inclus avec IdleX.
Roger
7

La façon d'exécuter des commandes dans Python 2.4+ consiste à utiliser le module de sous - processus . Vous pouvez l'utiliser de la même manière que vous l'utilisez os.system.

import subprocess
subprocess.call("clear") # linux/mac
subprocess.call("cls", shell=True) # windows

Si vous l'exécutez dans la console python, vous devrez faire quelque chose pour masquer la valeur de retour (pour l'un os.systemou l' autre subprocess.call), comme l'assigner à une variable:

cls = subprocess.call("cls", shell=True)
Rudd Zwolinski
la source
Traceback (dernier appel en dernier): fichier "<pyshell # 1>", ligne 1, dans <module> subprocess.call ("cls") Fichier "C: \ Python26 \ lib \ subprocess.py", ligne 444, dans retour d'appel Popen (* popenargs, ** kwargs) .wait () Fichier "C: \ Python26 \ lib \ subprocess.py", ligne 595, dans init errread, errwrite) Fichier "C: \ Python26 \ lib \ subprocess.py ", ligne 804, dans _execute_child startupinfo) WindowsError: [Error 2] Le système ne trouve pas le fichier spécifié
dévoré l'elysium le
1
Hmm ... C'est ce que j'obtiens pour ne pas utiliser Windows et donc ne pas pouvoir le tester. Essayez subprocess.call ("cls", shell = True)
Rudd Zwolinski
5

J'aime utiliser:

import os
clear = lambda : os.system('cls') # or clear for Linux

clear()
lfsando
la source
On dirait que cette réponse a déjà été fournie
OneCricketeer
4

Fichier -> Nouvelle fenêtre

Dans la nouvelle fenêtre **

Exécuter -> Shell Python

Le problème avec cette méthode est qu'elle effacera toutes les choses que vous avez définies, telles que les variables.

Sinon, vous devez simplement utiliser l'invite de commande.

ouvrir l'invite de commande

tapez "cd c: \ python27"

tapez "python example.py", vous devez le modifier en utilisant IDLE lorsqu'il n'est pas en mode interactif. Si vous êtes dans le shell python, fichier -> nouvelle fenêtre.

Notez que example.py doit être dans le même répertoire que C: \ python27, ou quel que soit le répertoire sur lequel vous avez installé python.

Ensuite, à partir de là, il vous suffit d'appuyer sur la touche fléchée HAUT de votre clavier. Vous venez de modifier example.py, utilisez CTRL + S, puis revenez à l'invite de commande, appuyez sur la touche fléchée HAUT, appuyez sur Entrée.

Si l'invite de commande devient trop encombrée, tapez simplement "clr"

La commande "clr" ne fonctionne qu'avec l'invite de commande, elle ne fonctionnera pas avec IDLE.

lâche anonyme
la source
3
Je dis juste, mais je crois que la question est de savoir: «Comment effacez-vous l'écran AU RALENTI DE L'INTÉRIEUR DU SCRIPT PYTHON.
Élektra
Démarrer un nouveau fichier et exécuter le shell Python semblait être la seule option disponible pour moi, rien d'autre ne fonctionnait. Merci!
Sergey Zakharov
4

Il semble qu'il n'y ait aucun moyen direct pour effacer la console IDLE.

Une façon de le faire est d'utiliser exit () comme dernière commande dans mon script python (.py). Lorsque j'exécute le script, il ouvre toujours une nouvelle console et une invite avant de quitter.

À l'envers: la console est lancée à chaque fois que le script est exécuté. Inconvénient: la console est lancée à chaque fois que le script est exécuté.

Sandeep Gaadhe
la source
2

Vous pouvez créer un script AutoHotKey .

Pour définir ctrl-r sur une touche de raccourci pour effacer le shell:

^r::SendInput print '\n' * 50 {Enter}

Installez simplement AutoHotKey, mettez ce qui précède dans un fichier appelé idle_clear.ahk, exécutez le fichier et votre raccourci clavier est actif.

Miteux
la source
2

Aucune de ces solutions n'a fonctionné pour moi sur Windows 7 et dans IDLE. Bloqué à l'aide de PowerShell, exécutant Python à l'intérieur et quittant pour appeler "cls" dans PowerShell pour effacer la fenêtre.

INCONVÉNIENTS: suppose que Python est déjà dans la variable PATH. De plus, cela efface vos variables Python (bien que le redémarrage du shell le fasse également).

AVANTAGES: conserve toute personnalisation de fenêtre que vous avez effectuée (couleur, taille de la police).

Draghon
la source
2

Il semble qu'il est impossible de le faire sans aucune bibliothèque externe.

Une autre façon si vous utilisez Windows et que vous ne voulez pas ouvrir et fermer le shell à chaque fois que vous voulez l'effacer est d'utiliser l'invite de commande Windows.

  • Tapez pythonet appuyez sur Entrée pour transformer l'invite de commande Windows en python inactif (assurez-vous que python est installé).

  • Tapez quit()et appuyez sur Entrée pour le ramener à l'invite de commande Windows.

  • Tapez clset appuyez sur Entrée pour effacer l'invite de commande / shell Windows.

Ari
la source
2

Je vous recommande d'utiliser Thonny IDE pour Python. Son shell a l'option "Clear Shell" et vous pouvez également suivre les variables créées dans une liste séparée. Son débogage est très bon, même en comparaison avec les IDE modernes. Vous pouvez également écrire du code dans un fichier python avec un accès au shell au même endroit.

Et c'est léger!

Zaheer
la source
2

" commande + L " pour MAC OS X.

" control + L " pour Ubuntu

Efface la dernière ligne de la session interactive

Darshan NS
la source
Je ne connaissais pas cette fonctionnalité, merci Écrivez toujours ce que fait votre commande.
Priyank Pathak
1

Comme l'a dit mark.ribau, il semble qu'il n'y ait aucun moyen d'effacer le widget Texte en veille. Il faut éditer le EditorWindow.pymodule et ajouter une méthode et un élément de menu dans la classe EditorWindow qui fait quelque chose comme:

self.text.tag_remove("sel", "1.0", "end")
self.text.delete("1.0", "end")

et peut-être plus de gestion des balises dont je ne suis pas au courant.

tzot
la source
1

La meilleure façon de le faire sur Windows est d'utiliser l'invite de commande 'cmd' et d'accéder au répertoire python.L'invite de commande se trouve dans le menu Démarrer> exécuter> cmd

C:\>cd Python27
C:\Python27>python.exe
Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>import os
>>>os.system('cls')  #This will clear the screen and return the value 0
Al-Ani
la source
2
Je dis juste, mais je crois que la question est de savoir «Comment effacez-vous l'écran IN IDLE». (Souligné sur IN IDLE)
Élektra
1

utilisez ceci

for num in range(1,100):
    print("\n")
Tauseef
la source
Fonctionne, mais vous vous retrouvez avec une distance de défilement incroyablement longue si vous voulez voir quelque chose de plus tôt.
Élektra
Essayez de réduire la portée (1,10):
Tauseef
@Xenon Mais si l'idée est d'effacer la fenêtre, l'utilisateur ne devrait pas pouvoir voir quelque chose de plus tôt.
Sam le
0

Votre capture d'écran montre que vous utilisez IDLE. cls/ clearne fonctionnera pas pour vous.

orip
la source
5
Ce n'est pas une bonne réponse; OP n'a pas demandé "ce qui ne va pas m'aider à effacer la fenêtre IDLE de Python".
DeFazer
-1
from subprocess import call as c

def cls():

    c("cls",shell=True)

print([x for x in range(10000)])

cls()

Chaque fois que vous souhaitez effacer la console, appelez la fonction cls, mais notez que cette fonction effacera l'écran dans Windows uniquement si vous exécutez Python Script à l'aide de l'invite cmd, elle ne supprimera pas la mémoire tampon si vous exécutez par IDLE.

Akash Rana
la source
2
Je dis juste, mais je crois que la question est de savoir: «Comment effacez-vous l'écran AU RALENTI DE L'INTÉRIEUR DU SCRIPT PYTHON.
Élektra
-1

Je l'ai avec:

import console 
console.clear()

si vous voulez le faire dans votre script, ou si vous êtes dans la console, appuyez simplement sur effacer () et appuyez sur entrée. Cela fonctionne sur Pyto sur iPhone. Cela peut cependant dépendre de la console.

Bryan Aneux
la source
Il n'y a pas de consolemodule dans IDLE.
AKX
Il ne dit pas de module de console.
Musa le
-2

Cela fonctionne pour moi dans Windows:

print chr(12)

Joël Vroom
la source
chr n'est pas reconnu dans le terminal IDLE
wbadry
Merci Joel. A travaillé pour moi aussi.
Fonctionne aussi pour moi dans Windows, Spyder IDE, et semble être le code le plus simple pour obtenir le résultat souhaité. {chr (12) est formfeed}
Ian
-4

Si vous utilisez le terminal (j'utilise ubuntu), utilisez simplement la combinaison CTRL+ ldu clavier pour effacer le script python, même s'il efface le script du terminal ...

Arbaaz
la source
1
Juste dire, mais la question est de vider l'écran AU RALENTI, À PARTIR D'UN SCRIPT DE PYTHON.
Élektra
L'OP a spécifié IDLE.
wbadry
-5

Il n'est pas nécessaire d'écrire votre propre fonction pour cela! Python a une fonction claire intégrée.

Tapez ce qui suit dans l'invite de commande:

shell.clear()

Si vous utilisez IPythonpour Windows, c'est

cls()
Michael Vogel
la source
4
Y a-t-il une sorte d'importation requise pour faire cela, car cela n'a pas fonctionné pour moi. S'il y a une importation impliquée, vous devriez la mettre dans votre réponse. En outre, la question concerne la suppression de l'invite IN IDLE .
Élektra