我在python中使用pylabs和tkinter编写了一个简单的GUI,基于此处的示例: http://hardsoftlucid.wordpress.com/various-stuff/realtime-plotting/ 用于正弦波生成。
除了我调整它以通过互联网上的服务器从suds中提取数据。它没有像我预期的那样工作,因为GUI有点慢。我认为这是由于计时器。我刚开始学习如何使用昨天的matplotlib函数,所以我不知道每个函数是如何工作的。
如何加快速度?现在数据进入2-3秒,这很好,但我只是想提高GUI响应能力。
这是我的代码:
import numpy as np
from matplotlib import pyplot as plt
plt.ion() # set plot to animated
url = "http://10.217.247.36/WSDL/v4.0/iLON100.WSDL"
client = Client(url, username='ilon', password='ilon', location = 'http://10.217.247.36/WSDL/iLON100.WSDL')
read = client.factory.create('ns0:E_xSelect')
read['xSelect'] = """//Item[starts-with(UCPTname, "Net/MB485/MAIN POWER/Fb/PowerSum")]"""
ydata = [0] * 50
ax1=plt.axes()
# make plot
line, = plt.plot(ydata)
plt.ylim([10,40])
# start data collection
while True:
x = client.service.Read(read).Item[0].UCPTvalue[0].value #data stream
x = float(x)
ymin = float(min(ydata))-10
ymax = float(max(ydata))+10
plt.ylim([ymin,ymax])
ydata.append(x)
del ydata[0]
line.set_xdata(np.arange(len(ydata)))
line.set_ydata(ydata) # update the data
plt.draw() # update the plot