Можно ли программно сделать снимок экрана окна плоттера pyvista, используя клиентскую часть Jupyter?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Можно ли программно сделать снимок экрана окна плоттера pyvista, используя клиентскую часть Jupyter?

Сообщение Anonymous »

Мне нужно сохранить неподвижные изображения некоторых рендеров pyvista из Jupyter. По какой-то причине при использовании «клиентского» бэкэнда jupyter, а не бэкэнда по умолчанию, изображения выглядят намного лучше, соблюдают аргументы непрозрачности соответствующим образом, гораздо быстрее реагируют на взаимодействие и т. д., поэтому я хотел бы сделать снимок экрана с изображениями, созданными с помощью этого бэкэнда. .
Однако, когда я пытаюсь сделать снимок экрана с изображениями, созданными с помощью этого бэкэнда, с помощьюploter.screenshot, я получаю следующую ошибку:

Код: Выделить всё

AttributeError:  This plotter has not yet been set up and rendered with ``show()``. Consider setting ``off_screen=True`` for off screen rendering.
MRE, который выдает ту же ошибку:

Код: Выделить всё

import pyvista as pv

# Setup trame server proxy
pv.global_theme.trame.server_proxy_enabled = True
pv.global_theme.trame.server_proxy_prefix = "/proxy/"

# Initialize plotter
plotter = pv.Plotter(off_screen=True)

# Add a mesh
bunny = pv.examples.download_bunny()
plotter.add_mesh(bunny)

# Show
plotter.show(auto_close=False, jupyter_backend='client')

# Wait for it to render, then run this line
plotter.screenshot('screenshot_path.png')
Основная причина этой ошибки, по-видимому, заключается в том, что плоттер не осознает, что он уже был обработан при использовании этого бэкэнда, т.е.ploter._rendered возвращает False, даже когда я смотрю на визуализированном изображении на выходе ячейки Jupyter. Я могу делать снимки экрана ожидаемым образом при использовании бэкэнда по умолчанию; это происходит только с аргументом jupyter_backend='client'. Я также пробовал выполнять рендеринг с использованием бэкэнда по умолчанию, а затем в интерактивном режиме переключался на клиентский бэкэнд с помощью кнопки «Переключить режим рендеринга» в интерактивном окне, но при этом делался снимок экрана с изображением, созданным бэкэндом по умолчанию, а не клиентским бэкэндом. Является ли проблема с plotter._rendered ошибкой или известным поведением? В любом случае, есть ли обходной путь или есть ли другие аргументы, которые я должен передать либо инициализации Plotter, либо вызову show, которые могли бы обеспечить соответствующую синхронизацию состояния Plotter?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ow-using-t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»