Jakiś sposób na wyczyszczenie okna IDLE w Pythonie?

154

Wiem, że jest podobny temat dotyczący konsoli Pythona, ale nie wiem, czy są takie same. Próbowałem systemu („wyczyść”) i tutaj nie działa.

Jak wyczyścić okno IDLE języka Python?

pożarł elizjum
źródło
10
to nie jest duplikat, OP pyta o to, jak wyczyścić powłokę IDLE, a nie konsolę
Moha wszechmocny wielbłąd
1
Powodem, dla którego to nie działa, jest to, że Python uruchamia nową sesję powłoki i uruchamia tam polecenie clear. Wyjaśnia również, dlaczego cdnie działa w system.os.
jkd
14
Przytrzymaj ctrl + jprzez chwilę, a następnie naciśnij Enter, To będzie najlepszy sposób
ytpillai
1
@ytpillai, Ah, ale to daje mi podpowiedź na dole. Rozwiązanie bez wątpienia, ale nadal zapewnia pewną wygodę.
John Red

Odpowiedzi:

97

„Cls” i „clear” to polecenia, które czyści terminal (np. Znak zachęty DOS lub okno terminala). Na swoim zrzucie ekranu używasz powłoki w IDLE, na którą takie rzeczy nie mają wpływu. Niestety nie sądzę, aby można było wyczyścić ekran w trybie IDLE. Najlepsze, co możesz zrobić, to przewinąć ekran w dół o wiele linii, np .:

print "\n" * 100

Chociaż możesz umieścić to w funkcji:

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

A potem w razie potrzeby nazwij to cls()

Brian
źródło
13
Czyści ekran, ale nadal pojawia się monit „>>>” w ostatnim wierszu, a raczej na górze, co, jak sądzę, czyni go mniej nieefektywnym ... nadal +1 dla wyraźnego ekranu
Invictus
10
Python 3.4.2 - Musiałem ująć "\ n" i * 100 w nawiasach, więc:print ("\n" * 100)
cody.codes
4
Nie spowoduje to wyczyszczenia ekranu, nadal mogę przewijać wstecz!
ezoterik
2
ctrl + jrównież działa. Może się przydać w tym. stackoverflow.com/a/11993793/4871483
ytpillai
1
Zauważ, że jest to tag Pythona. Nie dotyczy wersji. Dla wszystkich użytkowników Pythona 3.x jest toprint('\n'*100)
Luke
83

os.system('clear')działa na Linuksie. Jeśli używasz systemu Windows, spróbuj os.system('CLS')zamiast tego.

Najpierw musisz zaimportować system operacyjny w następujący sposób:

import os
Nadia Alramli
źródło
13
System os.system („CLS”) działa w systemie Windows. (Python 2.6). Wynikowy ekran zostanie wyczyszczony, a na górze pojawi się tylko „0”, które, jak zakładam, jest wartością zwracaną przez CLS. Następna linia zawiera znak zachęty >>>.
mjv
35
powoduje to wywołanie systemu operacyjnego do cls w zewnętrznym wierszu poleceń i nie wchodzi w interakcję w / Idle
bunglestink
15
idle nie jest oknem konsoli. Zarówno clear, jak i cls działają w oknach konsoli / terminala.
Bryan Oakley
16
Pytanie brzmi
``
21
Dlaczego jest to przegłosowane? Spowoduje to otwarcie nowego wiersza poleceń, wyczyszczenie go i zamknięcie
ytpillai
39

Większość odpowiedzi tutaj czyści ekran zachęty DOS, za pomocą poleceń czyszczących, o co nie chodzi. Inne odpowiedzi to drukowanie pustych linii, aby pokazać efekt czyszczenia ekranu.

Najprostsza odpowiedź na to pytanie brzmi

Nie jest możliwe wyczyszczenie powłoki Python IDLE bez zewnętrznej integracji modułu. Jeśli naprawdę chcesz uzyskać czystą, świeżą powłokę, po prostu zamknij poprzednią powłokę i uruchom ją ponownie

Abdul Rehman
źródło
3
To dobra, bezpośrednia i praktyczna odpowiedź na to pytanie; zamknij bezczynność, pozostaw otwarty plik, uruchom plik ponownie i bezczynny ma teraz nowy ekran.
Mike_K
@Mike_K, może się przydać, ale nie zawsze. W tej chwili mam podzielony ekran (książka <|> jest bezczynna). Kiedy ponownie uruchomię tryb bezczynności, nowy ekran pojawi się w domyślnej pozycji / wymiarach. Więc to będzie bardzo nudne.
sdlins
38

ctrl+ Lczyści ekran w systemie Ubuntu Linux.

shxfee
źródło
Również w Red Hat / Fedora / CentOS
DtechNet
1
Również w systemie Windows, jeśli używasz IDLEx. Twoje zdrowie! Tak się cieszę, że w końcu udało mi się znaleźć proste rozwiązanie!
John Red
Nie działa w Ubuntu 18.04. Mniej gorsze jest użycie CTRL+ Jwielokrotnie.
sdlins
@slinstj, który zamknął go całkowicie w oknach
Mubarek
Dodano do mojego dzisiejszego hacka! Działa też jak urok w MacOS!
xtornasol512
21

Rozszerzenie do czyszczenia powłoki można znaleźć w wydaniu 6143 jako „żądanie funkcji”. To rozszerzenie jest dołączone do IdleX .

zrozumiałem
źródło
1
To wspaniałe rozszerzenie do Python Idle. Dziękuję bardzo!
Indrajit
19
>>> import os

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

To doskonale. Nie ma też nadrukowanego „0”.

Derk Smith
źródło
Ładny, prosty, robi to, co mówi. Lub po import osprostu wpisz, os.system("clear")chociaż funkcja jest przydatna, jeśli często musisz wyczyścić ekran.
Dave Everitt
1
os.system ("clear") działał. To działa dla mnie, ale muszę wpisać „cls ()”
j0h
Kiedy próbowałem tego, wiersz poleceń zwrócił <function cls na 0x024D25D0>, a konsola się nie wyczyściła
ericgrosse
Najlepsza jak dotąd odpowiedź
hello123
@ericgrosse trzeba wpisać (CLS) nie CLS
Banoona
7

Sposobem wykonywania poleceń w Pythonie 2.4+ jest użycie modułu podprocesu . Możesz go używać w ten sam sposób, w jaki używasz os.system.

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

Jeśli wykonujesz to w konsoli Pythona, musisz zrobić coś, aby ukryć wartość zwracaną (dla jednej os.systemlub drugiej subprocess.call), na przykład przypisanie jej do zmiennej:

cls = subprocess.call("cls", shell=True)
Rudd Zwolinski
źródło
Traceback (ostatnie wywołanie ostatnie): Plik „<pyshell # 1>”, wiersz 1, w <module> subprocess.call („cls”) Plik „C: \ Python26 \ lib \ subprocess.py”, wiersz 444, w call return Popen (* popenargs, ** kwargs) .wait () Plik "C: \ Python26 \ lib \ subprocess.py", wiersz 595, init errread, errwrite) Plik "C: \ Python26 \ lib \ subprocess.py ", wiersz 804, w _execute_child startupinfo) WindowsError: [Błąd 2] System nie może znaleźć określonego pliku
pożarty elysium
1
Hmm ... To jest to, co otrzymuję za to, że nie używam Windowsa i przez to nie mogę go przetestować. Wypróbuj subprocess.call ("cls", shell = True)
Rudd Zwolinski,
5

Lubię używać:

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

clear()
lfsando
źródło
Wygląda na to, że ta odpowiedź została już udzielona
OneCricketeer
4

Plik -> Nowe okno

W nowym oknie **

Uruchom -> Python Shell

Problem z tą metodą polega na tym, że usunie ona wszystkie zdefiniowane przez Ciebie rzeczy, takie jak zmienne.

Alternatywnie powinieneś po prostu użyć wiersza poleceń.

otwórz wiersz polecenia

wpisz „cd c: \ python27”

wpisz „python example.py”, musisz edytować to za pomocą IDLE, gdy nie jest w trybie interaktywnym. Jeśli jesteś w powłoce Pythona, plik -> nowe okno.

Zwróć uwagę, że plik example.py musi znajdować się w tym samym katalogu co C: \ python27 lub w jakimkolwiek katalogu, w którym masz zainstalowany python.

Następnie wystarczy nacisnąć klawisz strzałki W GÓRĘ na klawiaturze. Po prostu edytuj example.py, użyj CTRL + S, a następnie wróć do wiersza poleceń, naciśnij klawisz strzałki w górę, naciśnij klawisz Enter.

Jeśli wiersz polecenia jest zbyt zatłoczony, po prostu wpisz „clr”

Polecenie „clr” działa tylko z wierszem poleceń, nie będzie działać z IDLE.

anonimowy tchórz
źródło
3
Tylko mówię, ale wydaje mi się, że pytanie brzmi: „Jak wyczyścić ekran w bezczynności, wewnątrz skryptu PYTHON”.
Élektra
Uruchomienie nowego pliku i uruchomienie w nim powłoki Pythona wydawało mi się jedyną dostępną opcją, nic więcej nie działało. Dzięki!
Sergey Zakharov
4

Wygląda na to, że nie ma bezpośredniego sposobu na wyczyszczenie konsoli IDLE.

Jednym ze sposobów jest użycie exit () jako ostatniego polecenia w moim skrypcie Pythona (.py). Kiedy uruchamiam skrypt, zawsze otwiera nową konsolę i monituje przed zakończeniem.

Upside: Konsola jest uruchamiana na nowo za każdym razem, gdy wykonywany jest skrypt. Wada: Konsola jest uruchamiana na nowo za każdym razem, gdy skrypt jest wykonywany.

Sandeep Gaadhe
źródło
2

Możesz stworzyć skrypt AutoHotKey .

Aby ustawić ctrl-r na klawisz skrótu, aby wyczyścić powłokę:

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

Po prostu zainstaluj AutoHotKey, umieść powyższe w pliku o nazwie idle_clear.ahk, uruchom plik, a twój skrót klawiszowy jest aktywny.

Niechlujny
źródło
2

Żadne z tych rozwiązań nie działało dla mnie w systemie Windows 7 i w IDLE. Nawinąć za pomocą PowerShell, uruchomić w nim Pythona i wyjść, aby wywołać „cls” w PowerShell, aby wyczyścić okno.

MINUSY: Zakłada, że ​​Python jest już w zmiennej PATH. To również czyści twoje zmienne Pythona (chociaż tak samo jak restart powłoki).

PLUSY: zachowuje wszelkie dokonane przez Ciebie dostosowania okna (kolor, rozmiar czcionki).

Draghon
źródło
2

Wydaje się, że nie da się tego zrobić bez zewnętrznej biblioteki.

Alternatywnym sposobem, jeśli używasz systemu Windows i nie chcesz otwierać i zamykać powłoki za każdym razem, gdy chcesz ją wyczyścić, jest użycie wiersza polecenia systemu Windows.

  • Wpisz pythoni naciśnij klawisz Enter, aby zmienić wiersz poleceń systemu Windows na bezczynny python (upewnij się, że python jest zainstalowany).

  • Wpisz quit()i naciśnij Enter, aby przywrócić go do wiersza poleceń systemu Windows.

  • Wpisz clsi naciśnij Enter, aby wyczyścić wiersz polecenia / powłokę systemu Windows.

Ari
źródło
2

Poleciłbym użycie Thonny IDE dla Pythona. Jego powłoka ma opcję „Wyczyść powłokę”, a także możesz śledzić zmienne utworzone na osobnej liście. Debugowanie jest bardzo dobre, nawet w porównaniu z nowoczesnymi IDE. Możesz także napisać kod w pliku Pythona wraz z dostępem do powłoki w tym samym miejscu.

I jest lekki!

Zaheer
źródło
2

command + L ” w systemie MAC OS X.

control + L ” dla Ubuntu

Czyści ostatnią linię w sesji interaktywnej

Darshan NS
źródło
Nie wiedziałem o tej funkcji, dzięki Zawsze pisz, co robi twoje polecenie.
Priyank Pathak
1

Jak powiedział mark.ribau, wydaje się, że nie ma możliwości wyczyszczenia widżetu Tekst w stanie bezczynności. Należy wyedytować EditorWindow.pymoduł i dodać metodę i pozycję menu w klasie EditorWindow, która robi coś takiego:

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

i być może trochę więcej zarządzania tagami, których nie znam.

tzot
źródło
1

Najlepszym sposobem na zrobienie tego w systemie Windows jest użycie wiersza poleceń „cmd” i dostęp do katalogu Python, który można znaleźć w menu Start> uruchom> 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
źródło
2
Tylko mówię, ale uważam, że pytanie brzmi: „Jak wyczyścić ekran NA BEZCZYNNOŚCI”. (Podkreślenie IN IDLE)
Élektra
1

Użyj tego

for num in range(1,100):
    print("\n")
Tauseef
źródło
Działa, ale kończy się na niewiarygodnie dużej odległości przewijania, jeśli chcesz zobaczyć coś wcześniejszego.
Élektra
Spróbuj zmniejszyć zakres (1,10):
Tauseef
@Xenon Ale jeśli chodzi o to, aby wyczyścić okno, użytkownik nie powinien mieć możliwości obejrzenia czegoś z wcześniejszego okresu.
Sam,
0

Twój zrzut ekranu pokazuje, że używasz IDLE. cls/ clearnie będzie działać dla Ciebie.

orip
źródło
5
To nie jest dobra odpowiedź; OP nie pytał o "co NIE pomoże mi wyczyścić okna IDLE Pythona".
DeFazer
-1
from subprocess import call as c

def cls():

    c("cls",shell=True)

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

cls()

Ilekroć chcesz wyczyścić konsolę, wywołaj funkcję cls, ale pamiętaj, że ta funkcja wyczyści ekran w systemie Windows tylko wtedy, gdy używasz skryptu Python za pomocą polecenia cmd, nie wyczyści bufora, jeśli używasz IDLE.

Akash Rana
źródło
2
Tylko mówię, ale wydaje mi się, że pytanie brzmi: „Jak wyczyścić ekran w bezczynności, wewnątrz skryptu PYTHON”.
Élektra
-1

Mam to z:

import console 
console.clear()

jeśli chcesz to zrobić w swoim skrypcie lub jeśli jesteś w konsoli, po prostu dotknij wyczyść () i naciśnij enter. To działa na Pyto na iPhonie. Może to jednak zależeć od konsoli.

Bryan Aneux
źródło
W consoleIDLE nie ma modułu.
AKX
Mówi, że nie ma modułu konsoli.
Musa
-2

To działa dla mnie w systemie Windows:

print chr(12)

Joel Vroom
źródło
chr nie jest rozpoznawany w terminalu IDLE
wbadry
Dzięki Joel. Dla mnie też zadziałało.
U mnie działa również w systemie Windows, Spyder IDE i wydaje się być najprostszym kodem do osiągnięcia pożądanego rezultatu. {chr (12) is formfeed}
Ian
-4

Jeśli używasz terminala (ja używam ubuntu), po prostu użyj kombinacji CTRL+ lz klawiatury, aby wyczyścić skrypt Pythona, nawet jeśli czyści skrypt terminala ...

Arbaaz
źródło
1
Tylko mówię, ale pytanie dotyczy wyczyszczenia ekranu W BEZCZYNNOŚCI, Z PYTHONA SKRYPTU.
Élektra
OP określił IDLE.
wbadry
-5

Nie ma potrzeby pisania własnej funkcji, aby to zrobić! Python ma wbudowaną przejrzystą funkcję.

Wpisz następujące polecenie w wierszu polecenia:

shell.clear()

Jeśli używasz IPythonw systemie Windows, to jest

cls()
Michael Vogel
źródło
4
Czy jest do tego potrzebny jakiś import, ponieważ nie zadziałał dla mnie. Jeśli w grę wchodzi import, należy umieścić go w odpowiedzi. Pytanie dotyczy również usunięcia monitu IN IDLE .
Élektra