python - Python Kivy 实时图表
问题描述
我正在学习使用 Kivy。我的目标是创建一个应用程序来显示运行声音的声波图。
不幸的是,我无法让图表实时更新。我得到“NameError: name 'graph' is not defined”,我真的不知道如何解决它。
下面的代码:
from math import sin
from kivy.garden.graph import Graph, MeshLinePlot
from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock
class MyApp(App):
plot = MeshLinePlot(color=[1, 0, 0, 1])
graph = Graph(xlabel='X', ylabel='Y', x_ticks_minor=5,
x_ticks_major=25, y_ticks_major=1,
y_grid_label=False, x_grid_label=False, padding=5,
x_grid=False, y_grid=False, xmin=-0, xmax=100, ymin=-1, ymax=1,)
def build(self):
box = BoxLayout()
Clock.schedule_interval(self.update_points, 1/60.)
Clock.schedule_interval(self.update_xaxis, 1/60.)
box.add_widget(graph)
return box
def update_xaxis(self,*args):
global graph
graph.xmin = 0
graph.xmax = 100
def update_points(self, *args):
#self.plot.points = [(i,i)]
self.plot.points = [(x, sin(x / 10.)) for x in range(0, 101)]
MyApp().run()
解决方案
您对plot
and的引用graph
(除了它们被创建的地方)都应该是self.plot
and self.graph
。此外,您不希望方法global graph
中出现该行update_xaxis()
。在你做出更正之后,你的下一个问题应该是一个单独的帖子。
推荐阅读
- javascript - React - 多张图片上传时间错误(Firebase Firestore 和 Storage)
- apache - 不可见的htaccess重定向保持可见问题
- java - Hibernmate + Postgres dosent create tables on first run
- http - http get on dart 需要很长时间才能返回响应状态
- visual-studio - 将 Visual Studo 连接到源代码管理时 URI 无效
- python - 拆分一列并在括号之间获取字符串
- reactjs - 从数组字段中的文档 id 获取 firestore 文档并在 React 中显示
- java - AspectJ 与 Spring AOP 相结合
- c++ - 将元素插入数组时面临问题
- python - 您如何获取键的值并将其添加到列表中?