如何在Python程序中插入Matplotlib饼图并解决图表弹窗卡住问题
问题原因
你的饼图窗口无响应确实和程序中的无限循环有关,核心有两点:
- Matplotlib的窗口拖拽、关闭等交互操作依赖自身的事件循环,
time.sleep(3)会完全阻塞主进程,没有给Matplotlib分配处理窗口事件的资源,导致窗口无响应。 - 默认
plt.show()为阻塞模式,放在死循环中会打断程序执行流程,也会影响窗口交互逻辑。
解决方法
将你注释掉的代码替换为以下版本,核心是用plt.pause()替代time.sleep(),前者在等待的同时会处理Matplotlib的窗口事件,保证窗口可以正常响应操作:
labels = [] sizes = [] for x, y in process_time.items(): labels.append(x) sizes.append(y) # 每次绘制前清空画布,避免多次绘制内容重叠 plt.clf() plt.pie(sizes, labels=labels) plt.axis('equal') # 非阻塞显示窗口 plt.show(block=False) # 等待3秒,同时处理窗口交互事件 plt.pause(3) plt.close('all')
如果需要窗口保留到你手动关闭后再继续执行后续逻辑,可以将plt.pause(3)和plt.close('all')替换为plt.show()即可。
内容的提问来源于stack exchange,提问作者The Oracle
相关产品推荐
相关产品推荐

