Определить ширину линии в ноутбуке Jupyter? - PullRequest
1 голос
/ 27 мая 2020

Для i python я использую это для определения ширины строки консоли:

    ncols =  int(os.getenv('COLUMNS', 80))

как мне сделать то же самое для ноутбука jupyter из python?

1 Ответ

1 голос
/ 28 мая 2020

Ширина ячейки jupyter может быть получена из стиля записной книжки. Вы можете использовать инструменты разработки браузера, чтобы проверить html, или вы можете использовать следующий код в ячейке записной книжки, чтобы получить ширину строки ячейки и затем вычислить количество символов, которое она будет содержать.

следующее будет:

  • Используйте %%html magi c для создания холста и js скрипта.
  • найдите элемент div.CodeMirror-lines и получите его шрифт и ширину.
  • установите для холста тот же шрифт, что и для элемента строки ячейки.
  • используйте measureText для измерения длины одного символа.
  • предупреждает вас о количестве символов который будет соответствовать ширине линии.
%%html
<canvas id="canvas"></canvas>
<script>
    // retrieve the width and font
    var el = document.querySelector("div.CodeMirror-lines")
    var ff = window.getComputedStyle(el, null).getPropertyValue('font');
    var widthpxl = el.clientWidth

    //set up canvas to measure text width
    var can = document.getElementById('canvas');
    var ctx = can.getContext('2d');
    ctx.font = ff;

    //measure one char of text and compute num char in one line
    var txt = ctx.measureText('A');
    alert(Math.floor(widthpxl/txt.width))
    //EDIT: to populate python variable with the output:
    IPython.notebook.kernel.execute("ncols=" + Math.floor(widthpxl/txt.width));
</script>
...