PyCharm环境下Python matplotlib.pyplot如何适配fig.show()方法
fig.show()窗口闪退的根本原因
Matplotlib官方定义中,
fig.show()属于Figure实例的非阻塞显示方法,在默认的脚本非交互式运行环境下,不会持有GUI事件循环的存活引用,脚本执行完所有代码后Python进程会直接终止,关联的绘图窗口也会被系统同步回收,因此会出现窗口闪现1秒后自动关闭的现象。而常用的plt.show()是全局阻塞方法,会主动暂停进程执行,直到所有绘图窗口被手动关闭才会继续执行后续代码。
PyCharm环境下适配fig.show()的设置方案
如果要保留fig.show()的调用方式不修改代码,可以通过修改PyCharm运行模式实现窗口正常驻留:
方案1:全局开启交互式运行(所有脚本生效)
- 打开PyCharm设置页:顶部菜单栏依次点击
File > Settings(Windows/Linux)/PyCharm > Preferences(MacOS),也可以使用快捷键Ctrl+Alt+S(Windows/Linux)/Command+,(MacOS) - 依次进入左侧菜单
Build, Execution, Deployment > Console > Python Console - 勾选右侧配置项中的 Run with Python Console,点击应用保存设置
- 后续所有Python脚本都会默认在交互式控制台中运行,进程不会在脚本代码执行完后直接退出,
fig.show()生成的窗口可正常保持显示
方案2:单脚本配置(仅针对指定脚本生效,不修改全局设置)
- 点击PyCharm右上角运行配置下拉框,选择
Edit Configurations - 在左侧列表中找到你需要运行的对应脚本的配置项
- 勾选右侧配置页中的 Run with Python Console,点击应用保存即可
无设置修改的兼容方案
如果不想改动PyCharm设置,也可以在现有代码的fig.show()后添加一行阻塞代码,手动保持进程存活:
fig.show() # 添加以下任意一行都可实现阻塞 plt.show(block=True) # 或者用input手动等待输入:input("按回车关闭窗口")
内容的提问来源于stack exchange,提问作者CountDOOKU
相关产品推荐
相关产品推荐

