Python 基维:如何用动作条控制实时图形

Python 基维:如何用动作条控制实时图形,python,graph,kivy,Python,Graph,Kivy,我有一个实时更新和添加点的图表,但我希望能够通过操作栏(即播放、暂停、停止等)对其进行控制。到目前为止,无论我做了什么尝试,都没有成功。我需要将图形转换为某种动画吗 下面是我的.py文件 类生成器(对象): 定义初始(自我,周期): self.period=period self.i=0 定义呼叫(自我): 结果=self.i%self.period+sin(self.i)+1 self.i+=1 返回结果 类图形视图(框布局): 定义初始(自我,**kwargs): 超级(图形视图,自我)。\

我有一个实时更新和添加点的图表,但我希望能够通过操作栏(即播放、暂停、停止等)对其进行控制。到目前为止,无论我做了什么尝试,都没有成功。我需要将图形转换为某种动画吗

下面是我的.py文件

类生成器(对象):
定义初始(自我,周期):
self.period=period
self.i=0
定义呼叫(自我):
结果=self.i%self.period+sin(self.i)+1
self.i+=1
返回结果
类图形视图(框布局):
定义初始(自我,**kwargs):
超级(图形视图,自我)。\uuuuu初始值(**kwargs)
graph_theme={'label_options':{'color':rgb('444444'),
'bold':True},
“背景颜色”:rgb('F8F2'),
“勾选颜色”:rgb('808080'),
“边框颜色”:rgb('808080')}
self.graph=graph(xlabel='Times',
ylabel='Sales',
x_ticks_minor=5,
x_ticks_major=10,
y_ticks_minor=5,
y_ticks_major=10,
y_网格_标签=真,
x_网格_标签=真,
填充=5,
xlog=False,
ylog=假,
x_grid=True,
y_grid=True,
**图表(主题)
self.input_plot=MeshLinePlot(颜色=[0,1,0,1])
self.prediction_plot=MeshLinePlot(颜色=[1,0,0,1])
self.input\u plotpoints=deque(maxlen=100)
self.predictions\u plotpoints=deque(maxlen=100)
self.graph.add\u绘图(self.input\u绘图)
self.graph.add\u图(self.prediction\u图)
对于X范围内的i(10):
self.wave1=发电机(24)
self.wave2=发电机(13)
时钟计划间隔(自更新点,1/100)
时钟计划间隔(自更新图,1/100)
时钟计划间隔(lambda*args:self.add_点(self.wave1(),self.wave2()),0.2)
self.add\u小部件(self.graph)
def更新点(自身,*参数):
self.input\u plot.points=zip(范围(len(self.input\u plotpoints)),self.input\u plotpoints)
self.prediction\u plot.points=zip(范围(len(self.predictions\u plotpoints)),self.predictions\u plotpoints)
def update_图(自身,*args):
如果len(自输入\绘图点)>3:
self.graph.ymin=math.ceil(min(self.input\u plotpoints))
self.graph.ymax=math.ceil(最大值(self.input\u plotpoints))
def添加点(自我、主动、预测):
self.input\u plotpoints.append(活动)
self.predictions\u plotpoints.append(预测)
def pause():
时间。睡眠(5)
类操作视图(BoxLayout):
通过
以下是.kv文件:

:
使用分隔符:True
以前的行动:
标题:“动作栏”
与_previous一起:False
ActionOverflow:
操作按钮:
文本:“Btn0”
图标:'atlas://data/images/defaulttheme/audio-volume-high'
操作按钮:
文本:“开始”
操作按钮:
文本:“暂停”
发布时:root.GraphView.pause
操作按钮:
文字:“简历”
操作按钮:
文本:“停止”
行动小组:
文本:“组1”
操作按钮:
文本:“Btn5”
操作按钮:
文本:“Btn6”
操作按钮:
文本:“Btn7”

好的,答案比预期的简单。所需要的只是一个布尔值(即pause=False)和几个if条件,这些条件位于updatepoints和addpoints函数中,用于检查pause是否为True

创建一个单独的函数,将pause从默认值false更改为True,并从操作栏(在.kv中)调用该函数