鱼C论坛

 找回密码
 立即注册
查看: 6180|回复: 3

[已解决]matplotlib画动态曲线图

[复制链接]
发表于 2016-8-27 18:12:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位好,我用第三方库pylab来做动态曲线生成,但为什么关闭曲线窗口时没有退出循环呢,没有打印出‘over’,不知道该如何响应关闭窗体。我的开发环境是win7 64位 python3.4,求救,下面是源程序。
  1. from pylab import *
  2. import random
  3. import time

  4. fig, ax = plt.subplots()

  5. grid(True)
  6. plt.ion()
  7. x=[]
  8. y=[]
  9. i=0
  10. while True:
  11.      if True:  
  12.         dat=10*random.random()  
  13.         x.append(i)
  14.         y.append(dat)
  15.         ax.plot(x,y,'b')
  16.         plt.pause(0.0001)                     
  17.         plt.show()

  18.         
  19.      i +=1
  20.      time.sleep(0.01)
  21.      
  22. print('over')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-8-28 09:41:13 | 显示全部楼层
Anyone can help me?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-28 09:50:12 | 显示全部楼层    本楼为最佳答案   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-29 16:32:58 | 显示全部楼层
谢谢你的回复,不过我这个貌似用线程做也不行,我要判断的是这个界面被“X”掉,Tinkter 中直接有响应这个事件,但是Pylab库我不知道有没有这样的API函数。我也试着改了一下执行,但没达到预期效果,程序如下:
  1. from pylab import *
  2. import random
  3. import time
  4. from   tkinter import*
  5. from   tkinter import ttk
  6. import tkinter  as tk


  7. class huatu(Tk):
  8.     def __init__(self):
  9.         root=Tk()   
  10.         self.fig, self.ax = plt.subplots()
  11.         grid(True)
  12.         plt.ion()
  13.         self.x=[]
  14.         self.y=[]
  15.         self.i=0
  16.         self.flag=0
  17.         self.draw()
  18.         root.bind('<Destroy>', self.over)
  19.         root.mainloop()
  20.     def draw(self):
  21.         while True:
  22.             
  23.                 dat=10*random.random()  
  24.                 self.x.append(self.i)
  25.                 self.y.append(dat)
  26.                 self.ax.plot(self.x,self.y,'b')
  27.                 plt.pause(0.0001)                     
  28.                 plt.show()
  29.                 self.i +=1
  30.                 time.sleep(0.01)
  31.                 if self.flag: break

  32.     def over(event):
  33.        self.flag=1

  34. a=huatu()     
  35. print('over')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-22 10:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表