在Python中,清除终端而不停止程序的最佳方法是什么?

qgelzfjb  于 2023-06-28  发布在  Python
关注(0)|答案(3)|浏览(94)

我希望在Python中制作一个相当全面的基于文本的游戏作为一个项目,以更好地学习它,但我不希望终端被多个不同的屏幕填满,所有屏幕都在彼此的顶部打印。我的想法是清除每个屏幕,如标题屏幕或库存屏幕时,球员切换,但我不知道是否有一个语句或模块来做到这一点。我已经谷歌了几个小时了,还没有找到任何东西,所以我希望你们中的一个可能知道。感谢帮助,谢谢!
尝试了Tkinter,和其他几个模块以及观看一些视频,但似乎没有什么可以清除屏幕而不结束程序。我很感激你的帮助,如果你有它,谢谢!

bttbmeg0

bttbmeg01#

如果您的终端支持ANSI转义码,则:

CLS = '\x1B[2J'

def cls():
    print(CLS, end='', flush=True)
lzfw57am

lzfw57am2#

尝试操作系统模块中的“clear_screen”功能。您可以使用它,每当你想清除屏幕前打印功能。

lrpiutwd

lrpiutwd3#

如果你想清除整个屏幕,然后使用,

import os

print("Your first string")
os.system('cls') # if you're using windows  else os.system('clear')
print('your second string')

如果要清除一行,则使用

import time

print('Your first string', end='\r')
time.sleep(2)
print('Your second string')

注意:这里我使用了time模块,因为如果不使用该模块,就看不到Your first string

我希望这会有所帮助。

编辑

如果第一个字符串的长度大于第二个字符串的长度,我的第二个建议将不起作用。所以你可以用这个来解,

import sys
import time

print("Your first string")

time.sleep(2) # Added a delay to see the first string otherwise you won't see it.

# Clear the first string
sys.stdout.write('\x1b[1A')
sys.stdout.write('\x1b[2K')

print("Your second string")

相关问题