You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code运行Python代码时matplotlib Figure窗口自动关闭如何解决

问题描述

开发简单模糊逻辑项目时,在Visual Studio Code环境下运行代码,Plot/Figure绘图窗口会在代码执行完毕后自动关闭,终端无任何报错信息,原始实现代码如下:

import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
import matplotlib.pyplot as plt

class fuzzyNilai:

    def __init__(self):
        self.forum = ctrl.Antecedent(np.arange(0, 11, 1), 'forum')
        self.disiplin = ctrl.Antecedent(np.arange(0, 11, 1), 'disiplin')
        self.NilaiQuizUjian = ctrl.Antecedent(np.arange(0, 11, 1), 'nilai')
        self.NilaiAkhir = ctrl.Consequent(np.arange(0, 101, 1), 'nilaiakhir')

    def membership(self):
        self.forum.automf(3)
        self.disiplin.automf(3)
        self.NilaiQuizUjian.automf(3)

plt = fuzzyNilai()
plt.membership()
plt.forum.view()
故障原因
  • 代码中实例化fuzzyNilai类时使用plt作为变量名,直接覆盖了开头导入的matplotlib.pyplot模块引用,会导致matplotlib的窗口控制逻辑异常
  • matplotlib默认在脚本执行到末尾时直接终止进程,没有启动事件循环等待用户操作,因此绘图窗口会随脚本执行结束直接销毁,不会持续驻留
修复方案
  • 更换类实例的变量名,不要占用plt作为matplotlib.pyplot别名的命名空间,避免模块引用被覆盖
  • 在所有绘图逻辑的末尾添加plt.show()方法,启动matplotlib的GUI事件循环,阻塞脚本退出流程,直到用户手动关闭绘图窗口

修复后的完整可运行代码如下:

import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
import matplotlib.pyplot as plt

class fuzzyNilai:

    def __init__(self):
        self.forum = ctrl.Antecedent(np.arange(0, 11, 1), 'forum')
        self.disiplin = ctrl.Antecedent(np.arange(0, 11, 1), 'disiplin')
        self.NilaiQuizUjian = ctrl.Antecedent(np.arange(0, 11, 1), 'nilai')
        self.NilaiAkhir = ctrl.Consequent(np.arange(0, 101, 1), 'nilaiakhir')

    def membership(self):
        self.forum.automf(3)
        self.disiplin.automf(3)
        self.NilaiQuizUjian.automf(3)

# 更换实例名,避免覆盖plt引用
fuzzy_calc = fuzzyNilai()
fuzzy_calc.membership()
fuzzy_calc.forum.view()
# 启动事件循环保持窗口打开
plt.show()

如果使用VS Code的Python扩展默认的内嵌绘图模式,也可以在设置中搜索Python > Plotting: Matplotlib Backend,将后端切换为非内嵌的GUI后端(比如TkAgg、Qt5Agg),运行后就会弹出独立的绘图窗口,配合plt.show()即可保持窗口常驻。

内容的提问来源于stack exchange,提问作者HuckleFinn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 10:33:11