When the screen capture shortcut (Shift+Control+Command+4) is used to record a MPL window, an exception occurs in backend_wx.py.
Code for reproduction
importmatplotlibmatplotlib.use('WxAgg')
importmatplotlib.pyplotaspltfig, ax=plt.subplots()
fruits= ['apple', 'blueberry', 'cherry', 'orange']
counts= [40, 100, 30, 55]
bar_labels= ['red', 'blue', '_red', 'orange']
bar_colors= ['tab:red', 'tab:blue', 'tab:red', 'tab:orange']
ax.bar(fruits, counts, label=bar_labels, color=bar_colors)
ax.set_ylabel('fruit supply')
ax.set_title('Fruit supply by kind and color')
ax.legend(title='Fruit color')
plt.show()
# run the above code (or anything else with WxAgg selected) in pythonw and# then with the MPL window active, press Shift+Control at the same time
Actual outcome
This exception occurs:
Traceback (most recent call last):
File "/Users/toby/mamba310/envs/py310all/lib/python3.10/site-packages/matplotlib/backends/backend_wx.py", line 753, in _on_key_down
self._get_key(event), *self._mpl_coords(),
File "/Users/toby/mamba310/envs/py310all/lib/python3.10/site-packages/matplotlib/backends/backend_wx.py", line 732, in _get_key
if not (key_name == 'shift' and key.isupper()):
AttributeError: 'NoneType' object has no attribute 'isupper'
Expected outcome
no exception
Additional information
check if key is None before trying to use any methods of it
The code for wx modifier keys was basically whole cloth re-written in #23473, which was released as part of 3.7.0, and I think this is no longer possible, from my reading of the code (but I do not have a mac to test with).
Activity
ksunden commented on Aug 24, 2023
The code for wx modifier keys was basically whole cloth re-written in #23473, which was released as part of 3.7.0, and I think this is no longer possible, from my reading of the code (but I do not have a mac to test with).
Can you test with newer Matplotlib, please?
briantoby commented on Aug 24, 2023
Indeed, 3.7.2 fixes this.