python - 如何在 Python IDLE Shell 中获取终端高度(以行为单位)?

标签 python shell terminal python-idle

我正在用 Python 3.5 创建一个 Hangman 游戏。我正在尝试创建一个清除控制台窗口的函数,我可以通过在 Windows 上使用 os.system("cls") 或在 macOS、Linux 等上使用 os.system("clear") 轻松完成此操作。 但是,当在 IDLE Shell 中运行脚本时,这些命令不起作用,因此我尝试打印一系列换行符来隐藏以前的所有内容。

我正在努力寻找 IDLE Shell 的行高度。我尝试过 os.get_terminal_size()[1] 但这给出了错误“ValueError:错误的文件描述符”。

这是我当前的代码:

def clear():
"""Clears the console window.

Executes the 'cls' command when running on Windows, or 'clear' on
other platforms (e.g. Linux, macOS). IDLE shell cannot clear, so 
prints newlines instead.
"""
if "idlelib.run" in sys.modules:
    # If running in IDLE.
    print("\n" * os.get_terminal_size()[1])
elif platform.system() == "Windows":
    # If running in Windows terminal.
    os.system("cls")
else:
    # If running in other terminals (Linux, macOS)
    os.system("clear")

我如何在行中找到 IDLE Shell 大小? 提前致谢。

最佳答案

你的问题是双重的。 1. 20 年前,IDLE 是为开发程序而设计的,而不是为运行程序的用户而设计的。 2. 重要的是,os 和shutil 被设计为与实际的文本终端(具有固定的行数和列数)或与模仿此类的程序一起工作。它们并不是为与 GUI 框架交互而设计的。为此有单独的模块。

你能做什么。

  1. 让用户在系统终端上运行您的程序(通常的默认设置)。对于开发,请打印类似 "\n**clear screen**\n" 的内容,以向开发人员发出信号,表明屏幕通常会被清除。

  2. 在 IDLE 分支中,print('\n'*N),其中 N 是 75,通常应该足够了。或者使用较小的数字并告知用户您的程序假设窗口最多为 N 行。

  3. 了解足够的 tkinter 来运行您的程序。清除屏幕就是 text.delete('1.0', 'end-1c')

关于python - 如何在 Python IDLE Shell 中获取终端高度(以行为单位)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59053782/

相关文章:

python - 如何将数据帧导出到谷歌云存储桶中的csv

python - Tensorflow,其中(索引) 'and' 条件

linux - 使新创建的用户的主目录对其他用户不可见

python - 如何在给定语法规则的情况下生成所有可能的字符串?

python - 检查用户是否存在 PRAW

bash - 带有 bash 和 applescript 的字符串文字

macos - mdfind 缺少结果

python - 在尝试无效命令时,终端中的 Ctrl+C 生成 python 回溯

linux - Github - 旧帐户的权限被拒绝

linux - bash shell 脚本中的意外输出