问题描述
使用 get_terminal_size
模块中的 shutil
方法,可以在运行时轻松确定终端的宽度。
以下脚本在 gnome-terminal 或 Terminator 等终端模拟器中直接启动时运行良好:
from shutil import get_terminal_size
from time import sleep
if __name__ == "__main__":
print("start")
for i in range(5):
print(f"term size is {get_terminal_size().columns}")
sleep(.5)
print("finished")
在脚本运行时更改窗口大小时,输出如下
start
term size is 112
term size is 102
term size is 102
term size is 113
term size is 115
finished
但是,在 IntelliJ 中通过单击运行按钮执行时,方法 get_terminal_size
始终返回回退值 80:
start
term size is 80
term size is 80
term size is 80
term size is 80
term size is 80
finished
从 IntelliJ 中包含的终端启动脚本也可以正常工作。
有没有办法通过其他方式在 IntelliJ 的输出控制台中获取终端大小?或者是否可以启用终端仿真使 get_terminal_size
工作?看来,至少对于 PyCharm 而言,存在或存在相应的设置 according to one SO answer。
解决方法
当您通过 Python 脚本运行配置运行程序时 - IDE 不会启动终端。它在嵌入式控制台窗口中运行程序,这在技术上不是操作系统终端。