Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb910442

Browse files
committed
Warn when trying to start a GUI event loop out of the main thread.
1 parent2f7be9a commitb910442

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

‎lib/matplotlib/pyplot.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@
2626
importre
2727
importsys
2828
importtime
29+
try:
30+
importthreading
31+
exceptImportError:
32+
importdummy_threadingasthreading
2933

3034
fromcyclerimportcycler
3135
importmatplotlib
@@ -177,6 +181,12 @@ def findobj(o=None, match=None, include_self=True):
177181
returno.findobj(match,include_self=include_self)
178182

179183

184+
def_get_required_interactive_framework():
185+
global_backend_mod
186+
returngetattr(
187+
_backend_mod.FigureCanvas,"required_interactive_framework",None)
188+
189+
180190
defswitch_backend(newbackend):
181191
"""
182192
Close all open figures and set the Matplotlib backend.
@@ -224,8 +234,7 @@ class _backend_mod(matplotlib.backend_bases._Backend):
224234
_log.debug("Loaded backend %s version %s.",
225235
newbackend,_backend_mod.backend_version)
226236

227-
required_framework=getattr(
228-
_backend_mod.FigureCanvas,"required_interactive_framework",None)
237+
required_framework=_get_required_interactive_framework()
229238
ifrequired_frameworkisnotNone:
230239
current_framework=cbook._get_running_interactive_framework()
231240
if (current_frameworkandrequired_framework
@@ -248,6 +257,9 @@ class _backend_mod(matplotlib.backend_bases._Backend):
248257

249258
defnew_figure_manager(*args,**kwargs):
250259
"""Create a new figure manager instance."""
260+
if (_get_required_interactive_framework()
261+
andthreading.current_thread()isnotthreading.main_thread()):
262+
cbook._warn_external("Don't do this!")
251263
global_backend_mod
252264
return_backend_mod.new_figure_manager(*args,**kwargs)
253265

@@ -276,6 +288,9 @@ def show(*args, **kwargs):
276288
This is experimental, and may be set to ``True`` or ``False`` to
277289
override the blocking behavior described above.
278290
"""
291+
if (_get_required_interactive_framework()
292+
andthreading.current_thread()isnotthreading.main_thread()):
293+
cbook._warn_external("Don't do this!")
279294
global_backend_mod
280295
return_backend_mod.show(*args,**kwargs)
281296

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp