มีวิธีใดบ้างในการล้างหน้าต่าง IDLE ของงูใหญ่?


154

ฉันรู้ว่ามีหัวข้อที่คล้ายกันเกี่ยวกับคอนโซลหลาม แต่ฉันไม่ทราบว่าพวกเขาเหมือนกัน ฉันลองใช้ระบบ ("ชัดเจน") และมันไม่ทำงานที่นี่

ฉันจะล้างหน้าต่าง IDLE ของงูใหญ่ได้อย่างไร


10
มันไม่ซ้ำกัน OP ถามเกี่ยวกับวิธีล้างเชลล์ IDLE ไม่ใช่คอนโซล
Moha the the almighty อูฐ

1
เหตุผลนี้ใช้ไม่ได้เนื่องจาก Python เริ่มเชลล์เซสชันใหม่และรันคำสั่งที่clearนั่น นอกจากนี้ยังอธิบายว่าทำไมไม่ทำงานในcd system.os
jkd

14
กดค้างไว้ctrl + jครู่หนึ่งแล้วกด Enter นั่นจะเป็นวิธีที่ดีที่สุด
ytpillai

1
@ytpillai อ่า แต่นั่นทำให้ฉันได้รับพรอมต์ที่ด้านล่าง ทางออกไม่ต้องสงสัยเลย แต่ก็ยังทำให้เกิดความสะดวกสบายบางอย่าง
John Red

คำตอบ:


97

"cls" และ "clear" เป็นคำสั่งที่จะทำการล้างเทอร์มินัล (เช่นพรอมต์ DOS หรือหน้าต่างเทอร์มินัล) จากภาพหน้าจอของคุณคุณกำลังใช้เชลล์ภายใน IDLE ซึ่งจะไม่ได้รับผลกระทบจากสิ่งต่าง ๆ น่าเสียดายที่ฉันไม่คิดว่าจะมีวิธีล้างหน้าจอใน IDLE วิธีที่ดีที่สุดที่คุณสามารถทำได้คือเลื่อนหน้าจอลงมาหลายบรรทัดเช่น:

print "\n" * 100

แม้ว่าคุณสามารถใส่สิ่งนี้ในฟังก์ชั่น:

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

แล้วเรียกมันเมื่อต้องการเป็น cls()


13
มันจะล้างหน้าจอ แต่คุณยังได้รับพรอมต์ ">>>" ที่บรรทัดสุดท้ายแทนที่จะอยู่ด้านบนซึ่งฉันเดาว่ามันจะไม่มีประสิทธิภาพมากกว่า ... ยังคง +1 สำหรับหน้าจอที่ชัดเจน
Invictus

10
Python 3.4.2 - ฉันต้องใส่ "\ n" และ * 100 ไว้ในวงเล็บดังนั้น:print ("\n" * 100)
cody.codes

4
นี่จะไม่ล้างหน้าจอฉันยังสามารถเลื่อนกลับขึ้นไปได้!
esoterik

2
ctrl + jยังใช้งานได้ อาจจะมีประโยชน์รวมทั้ง stackoverflow.com/a/11993793/4871483
ytpillai

1
ทราบว่านี่คือแท็กหลาม ไม่ใช่รุ่นที่เฉพาะเจาะจง สำหรับผู้ใช้ python 3.x ทุกคนคือprint('\n'*100)
ลูกา

83

os.system('clear')ทำงานบน linux หากคุณใช้ windows ลองos.system('CLS')แทน

คุณต้องนำเข้าระบบปฏิบัติการก่อนดังนี้:

import os

13
os.system ('CLS') ใช้งานได้ใน Windows (Python 2.6) หน้าจอที่ได้จะถูกลบเพียงแสดง "0" ซึ่งฉันถือว่าเป็นค่าส่งคืนสำหรับ CLS ที่ด้านบน บรรทัดถัดไปมีพรอมต์ >>>
mjv

35
สิ่งนี้ทำให้การเรียกระบบปฏิบัติการเพื่อ cls ในพรอมต์คำสั่งภายนอกและไม่โต้ตอบ w / ไม่ได้ใช้งาน
bunglestink

15
ไม่ได้ใช้งานไม่ใช่หน้าต่างคอนโซล ทั้งเคลียร์และ cls ทำงานบนคอนโซล / เทอร์มินัล windows
ไบรอัน Oakley

16
คำถามคือ 'หน้าจอที่ชัดเจนใน IDLE' วิธีการดังกล่าวไม่ทำงานบนคอมพิวเตอร์ของฉัน
Élektra

21
ทำไม upvoted นี้คืออะไร นี่จะเป็นการเปิดพรอมต์คำสั่งใหม่ล้างและปิด
ytpillai

39

คำตอบส่วนใหญ่ที่นี่ทำการล้างหน้าจอ DOS พร้อมรับคำสั่งในการลบซึ่งไม่ใช่คำถาม คำตอบอื่น ๆ ที่นี่คือการพิมพ์บรรทัดว่างเพื่อแสดงผลการล้างของหน้าจอ

คำตอบที่ง่ายที่สุดของคำถามนี้คือ

เป็นไปไม่ได้ที่จะล้าง python IDLE shell โดยไม่มีการรวมโมดูลภายนอก หากคุณต้องการได้รับเปลือกสดบริสุทธิ์ที่ว่างเปล่าเพียงแค่ปิดเปลือกก่อนหน้าและเรียกใช้อีกครั้ง


3
นี่เป็นคำตอบที่ดีตรงและเป็นประโยชน์สำหรับคำถามนี้ ปิดที่ไม่ได้ใช้งานเปิดไฟล์ค้างไว้เปิดไฟล์อีกครั้งและตอนนี้ไม่มีหน้าจอใหม่
Mike_K

@Mike_K มันจะมีประโยชน์ แต่ไม่เคยมีมาก่อน ตอนนี้ฉันมีหน้าจอแยก (หนังสือ <|> ว่าง) เมื่อฉันเปิดใช้งาน Idle หน้าจอใหม่จะอยู่ในตำแหน่ง / ขนาดเริ่มต้น ดังนั้นมันจะน่าเบื่อมาก
sdlins

38

ctrl+ Lล้างหน้าจอบน Ubuntu Linux


นอกจากนี้ใน Red Hat / Fedora / CentOS
DtechNet

1
บน Windows เช่นกันหากคุณใช้ IDLEx ไชโย! มีความสุขมากที่ได้รับทางออกที่ง่ายที่สุด!
John Red

ไม่ทำงานใน Ubuntu 18.04 ยิ่งแย่ลงที่นี่ใช้CTRL+ Jหลายครั้ง
sdlins

@slinstj ที่ปิดมันพร้อมกันบน windows
Mubarek

เพิ่มการแฮกของฉันวันนี้! ทำงานเหมือนจับใจใน MacOS!
xtornasol512

21

ส่วนขยายสำหรับการล้างเชลล์สามารถพบได้ในIssue6143เป็น "คำขอคุณลักษณะ" ส่วนขยายนี้จะมาพร้อมกับIdleX


1
นี่เป็นส่วนเสริมที่ยอดเยี่ยมสำหรับ Python Idle ขอบคุณมาก!
Indrajit

19
>>> import os

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

นั่นเป็นสิ่งที่สมบูรณ์แบบ ไม่มีการพิมพ์ '0'


เป็นเรื่องง่ายที่จะพูด หรือหลังจากimport osพิมพ์os.system("clear")แม้ว่าฟังก์ชั่นจะมีประโยชน์ถ้าคุณต้องล้างหน้าจอบ่อยครั้ง
Dave Everitt

1
os.system ("clear") ทำงาน สิ่งนี้ใช้ได้สำหรับฉัน แต่ฉันต้องพิมพ์ "cls ()"
j0h

เมื่อฉันลองทำสิ่งนี้บรรทัดคำสั่งจะส่งกลับ <function cls ที่ 0x024D25D0> และคอนโซลไม่ชัดเจน
ericgrosse

คำตอบที่ดีที่สุด
hello123

@ericgrosse คุณต้องพิมพ์ cls () ไม่ใช่ cls
Banoona


7

วิธีดำเนินการคำสั่งใน Python 2.4+ คือการใช้โมดูลกระบวนการย่อย os.systemคุณสามารถใช้มันในทางเดียวกันกับที่คุณใช้

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

หากคุณกำลังดำเนินการนี้ในคอนโซลหลามคุณจะต้องทำอะไรบางอย่างเพื่อซ่อนค่าส่งคืน (สำหรับอย่างใดอย่างหนึ่งos.systemหรือsubprocess.call) เช่นการกำหนดให้ตัวแปร:

cls = subprocess.call("cls", shell=True)

Traceback (การโทรล่าสุดครั้งล่าสุด): ไฟล์ "<pyshell # 1>", บรรทัด 1, ใน <module> subprocess.call ("cls") ไฟล์ "C: \ Python26 \ lib \ subprocess.py", บรรทัด 444, ใน การเรียกคืน Popen (* popenargs, ** kwargs) .wait () ไฟล์ "C: \ Python26 \ lib \ subprocess.py", บรรทัด 595, ใน errread init , errwrite) ไฟล์ "C: \ Python26 \ lib \ subprocess.py ", บรรทัด 804, ใน _execute_child startupinfo) WindowsError: [ข้อผิดพลาด 2] ระบบไม่สามารถค้นหาไฟล์ที่ระบุ
กลืน elysium

1
อืม .. นั่นเป็นสิ่งที่ฉันไม่ได้ใช้กับ Windows ดังนั้นจึงไม่สามารถทดสอบได้ ลอง subprocess.call ("cls", shell = True)
Rudd Zwolinski


4

ไฟล์ -> หน้าต่างใหม่

ในหน้าต่างใหม่ **

เรียกใช้ -> Python Shell

ปัญหาของวิธีนี้คือมันจะล้างทุกสิ่งที่คุณกำหนดไว้เช่นตัวแปร

หรือคุณควรใช้พรอมต์คำสั่ง

เปิดพรอมต์คำสั่ง

พิมพ์ "cd c: \ python27"

พิมพ์ "python example.py" คุณต้องแก้ไขโดยใช้ IDLE เมื่อไม่ได้อยู่ในโหมดโต้ตอบ หากคุณอยู่ในเปลือกงูหลามไฟล์ -> หน้าต่างใหม่

โปรดทราบว่า example.py จะต้องอยู่ในไดเรกทอรีเดียวกับ C: \ python27 หรือไดเรกทอรีใด ๆ ที่คุณติดตั้งไพ ธ อน

จากนั้นคุณเพียงกดปุ่มลูกศรขึ้นบนคีย์บอร์ดของคุณ คุณเพิ่งแก้ไข example.py ใช้ CTRL + S จากนั้นกลับไปที่พรอมต์คำสั่งกดปุ่มลูกศรขึ้นกด Enter

หากพรอมต์คำสั่งแออัดเกินไปให้พิมพ์ "clr"

คำสั่ง "clr" ใช้ได้กับพรอมต์คำสั่งเท่านั้น แต่จะไม่ทำงานกับ IDLE


3
เพิ่งจะพูด แต่ฉันเชื่อว่าคำถามกำลังถามว่า 'คุณจะล้างหน้าจอใน IDLE ได้อย่างไรจากข้างในสคริปต์ PYTHON
Élektra

การเริ่มต้นไฟล์ใหม่และใช้งาน Python shell ในนั้นดูเหมือนจะเป็นตัวเลือกเดียวที่ฉันมีให้ใช้งาน ขอบคุณ!
Sergey Zakharov

4

ดูเหมือนว่าไม่มีวิธีโดยตรงสำหรับการล้างคอนโซล IDLE

วิธีหนึ่งที่ฉันทำได้คือใช้ exit () เป็นคำสั่งสุดท้ายในสคริปต์ python ของฉัน (.py) เมื่อฉันเรียกใช้สคริปต์มันจะเปิดขึ้นคอนโซลใหม่และแจ้งให้ก่อนที่จะออก

Upside: คอนโซลเปิดใช้ใหม่ทุกครั้งที่เรียกใช้สคริปต์ ข้อเสีย: เปิดตัวคอนโซลใหม่ทุกครั้งที่มีการเรียกใช้สคริปต์


2

คุณสามารถสร้างสคริปต์AutoHotKeyได้

ในการตั้งค่า ctrl-r เป็นปุ่มลัดเพื่อล้างเปลือก:

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

เพียงแค่ติดตั้ง AutoHotKey ให้ใส่ด้านบนในไฟล์ชื่อ idle_clear.ahk เรียกใช้ไฟล์และปุ่มลัดของคุณนั้นทำงานอยู่


2

วิธีแก้ปัญหาเหล่านี้ไม่เหมาะกับฉันใน Windows 7 และภายใน IDLE แผลโดยใช้ PowerShell เรียกใช้ Python ภายในและออกจากการเรียก "cls" ใน PowerShell เพื่อล้างหน้าต่าง

ข้อเสีย: สมมติว่า Python อยู่ในตัวแปร PATH แล้ว นอกจากนี้จะเป็นการล้างตัวแปร Python ของคุณ (แต่จะเริ่มต้นเชลล์ใหม่)

ข้อดี: คงการปรับแต่งหน้าต่างใด ๆ ที่คุณทำ (สีขนาดตัวอักษร)


2

ดูเหมือนว่าเป็นไปไม่ได้ที่จะทำโดยไม่มีไลบรารี่ภายนอก

อีกทางเลือกหนึ่งถ้าคุณใช้ windows และไม่ต้องการเปิดและปิดเชลล์ทุกครั้งที่คุณต้องการล้างมันโดยใช้ command prompt windows

  • พิมพ์pythonและกด Enter เพื่อเปลี่ยนพรอมต์คำสั่งของ windows เป็น python ที่ไม่ได้ใช้งาน

  • พิมพ์quit()และกด Enter เพื่อเปลี่ยนกลับเป็นพรอมต์คำสั่งของ windows

  • พิมพ์clsและกด Enter เพื่อล้าง command prompt / windows shell


2

ฉันอยากจะแนะนำให้คุณใช้Thonny IDEสำหรับ Python It's shell มีตัวเลือก "Clear Shell" และคุณสามารถติดตามตัวแปรที่สร้างในรายการแยกต่างหาก การดีบักนั้นดีมากแม้จะเปรียบเทียบกับ IDE สมัยใหม่ นอกจากนี้คุณยังสามารถเขียนโค้ดในไฟล์ไพ ธ อนและเข้าถึงเชลล์ได้ในที่เดียวกัน

และมันมีน้ำหนักเบา!


2

" command + L " สำหรับ MAC OS X

" control + L " สำหรับ Ubuntu

ล้างบรรทัดสุดท้ายในเซสชันการโต้ตอบ


ฉันไม่รู้เกี่ยวกับคุณลักษณะนี้ขอบคุณเขียนสิ่งที่คำสั่งของคุณทำเสมอ
Priyank Pathak

1

ดังที่ mark.ribau กล่าวดูเหมือนว่าไม่มีวิธีการล้างวิดเจ็ตข้อความในขณะที่ไม่มีการใช้งาน หนึ่งควรแก้ไขEditorWindow.pyโมดูลและเพิ่มวิธีการและรายการเมนูในคลาส EditorWindow ที่ทำสิ่งที่ชอบ:

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

และอาจมีการจัดการแท็กเพิ่มเติมซึ่งฉันไม่ทราบ


1

วิธีที่ดีที่สุดในการทำบน windows คือการใช้ command prompt 'cmd' และเข้าถึงไดเรกทอรี python ที่ command prompt พบได้ในเมนู Start> run> 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

2
เพิ่งพูด แต่ฉันเชื่อว่าคำถามกำลังถามว่า 'คุณจะล้างหน้าจอใน IDLE ได้อย่างไร' เน้นIN IDLE )
Élektra

1

ใช้สิ่งนี้

for num in range(1,100):
    print("\n")

ใช้งานได้ แต่คุณจบลงด้วยการเลื่อนระยะไกลที่เหลือเชื่ออย่างไม่น่าเชื่อถ้าคุณต้องการเห็นอะไรบางอย่างจากก่อนหน้านี้
Élektra

พยายามลดช่วง (1,10):
Tauseef

@ ซีนอน แต่ถ้าความคิดคือการล้างหน้าต่างดังนั้นผู้ใช้ไม่ควรที่จะสามารถดูบางสิ่งจากก่อนหน้านี้
Sam

0

ภาพหน้าจอของคุณแสดงว่าคุณกำลังใช้ IDLE cls/ clearจะไม่ทำงานสำหรับคุณ


5
นั่นไม่ใช่คำตอบที่ดี OP ไม่ได้ถามว่า "อะไรจะไม่ช่วยให้ฉันล้างหน้าต่าง Python '
DeFazer

-1
from subprocess import call as c

def cls():

    c("cls",shell=True)

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

cls()

เมื่อใดก็ตามที่คุณต้องการล้างคอนโซลให้เรียกฟังก์ชัน cls แต่โปรดทราบว่าฟังก์ชั่นนี้จะล้างหน้าจอใน Windows เฉพาะในกรณีที่คุณใช้งาน Python Script โดยใช้คำสั่ง cmd จะไม่ล้างบัฟเฟอร์หากคุณใช้ IDLE


2
เพิ่งจะพูด แต่ฉันเชื่อว่าคำถามกำลังถามว่า 'คุณจะล้างหน้าจอใน IDLE ได้อย่างไรจากข้างในสคริปต์ PYTHON
Élektra

-1

ฉันได้รับมันด้วย:

import console 
console.clear()

ถ้าคุณต้องการที่จะทำมันในสคริปต์ของคุณหรือถ้าคุณอยู่ในคอนโซลเพียงแตะที่ล้าง () และกด Enter ใช้งานได้กับ Pyto บน iPhone มันอาจขึ้นอยู่กับคอนโซลว่า


ไม่มีconsoleโมดูลใน IDLE
AKX

มันบอกว่าไม่มีโมดูลคอนโซล
มูซา

-2

สิ่งนี้ใช้ได้กับฉันใน Windows:

print chr(12)


chr ไม่รู้จักในเทอร์มินัล IDLE
wbadry

ขอบคุณ Joel ทำงานให้ฉันด้วย

ทำงานให้ฉันด้วยใน Windows, Spyder IDE และดูเหมือนว่าจะเป็นรหัสที่ง่ายที่สุดเพื่อให้ได้ผลลัพธ์ตามที่ต้องการ {chr (12) คือ formfeed}
เอียน

-4

หากคุณใช้เทอร์มินัล (ฉันใช้อูบุนตู) เพียงใช้การรวมกันของCTRL+ lจากแป้นพิมพ์เพื่อล้างสคริปต์ไพ ธ อนแม้มันจะล้างสคริปต์เทอร์มินัล ...


1
เพิ่งพูด แต่คำถามเกี่ยวกับการล้างหน้าจอใน IDLE จาก PYTHON SCRIPT
Élektra

IDLE ที่ระบุ OP
wbadry

-5

ไม่จำเป็นต้องเขียนฟังก์ชั่นของคุณเองเพื่อทำสิ่งนี้! Python มีฟังก์ชั่นที่ชัดเจนในตัว

พิมพ์ต่อไปนี้ในพร้อมท์คำสั่ง:

shell.clear()

ถ้าใช้IPythonสำหรับ Windows มันเป็น

cls()

4
มีการนำเข้าบางอย่างที่จำเป็นสำหรับการทำเช่นนี้เพราะมันไม่ทำงานสำหรับฉัน หากมีการนำเข้าที่เกี่ยวข้องคุณควรใส่ลงในคำตอบของคุณ นอกจากนี้ยังเป็นคำถามที่เกี่ยวกับการล้างพรอมต์ที่ว่างใน
Élektra
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.