Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[Bug]: Widget blitting broken when saving as PDF #25075

Closed
@QuLogic

Description

@QuLogic

Bug summary

When running a test doc build for 3.7.0rc1, I build the PDF, which runs everything with the PDF backend. So either the PDF backend does not correctly mark itself as not supporting blitting, or the blitting is not turned off correctly in the button widgets.

Code for reproduction

make -C doc latexpdf

Actual outcome

/home/elliott/code/matplotlib-3.7.x/doc/users/next_whats_new/widget_button_styling.rst:8: WARNING: Exception occurred in plotting widget_button_styling-1
 from /home/elliott/code/matplotlib-3.7.x/doc/users/next_whats_new/widget_button_styling.rst:
Traceback (most recent call last):
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/sphinxext/plot_directive.py", line 615, in render_figures
    figman.canvas.figure.savefig(img.filename(fmt), dpi=dpi)
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/figure.py", line 3328, in savefig
    self.canvas.print_figure(fname, **kwargs)
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/backend_bases.py", line 2362, in print_figure
    result = print_method(
             ^^^^^^^^^^^^^
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/backend_bases.py", line 2228, in <lambda>
    print_method = functools.wraps(meth)(lambda *args, **kwargs: meth(
                                                                 ^^^^^
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/backends/backend_pdf.py", line 2815, in print_pdf
    self.figure.draw(renderer)
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/artist.py", line 95, in draw_wrapper
    result = draw(artist, renderer, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/artist.py", line 72, in draw_wrapper
    return draw(artist, renderer)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/figure.py", line 3135, in draw
    DrawEvent("draw_event", self.canvas, renderer)._process()
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/backend_bases.py", line 1259, in _process
    self.canvas.callbacks.process(self.name, self)
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/cbook/__init__.py", line 309, in process
    self.exception_handler(exc)
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/cbook/__init__.py", line 96, in _exception_printer
    raise exc
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/cbook/__init__.py", line 304, in process
    func(*args, **kwargs)
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/widgets.py", line 1706, in _clear
    self.ax.draw_artist(self._buttons)
  File "/home/elliott/code/matplotlib-3.7.x/lib/matplotlib/axes/_base.py", line 3076, in draw_artist
    a.draw(self.figure.canvas.get_renderer())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'FigureCanvasPdf' object has no attribute 'get_renderer'

Expected outcome

Docs build without warning.

Additional information

No response

Operating system

Fedora 37

Matplotlib Version

v3.7.x

Matplotlib Backend

PDF

Python version

3.11.1

Jupyter version

No response

Installation

git checkout

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions