【发布时间】:2020-05-31 16:09:02
【问题描述】:
我在 kivy android 应用程序中使用加速度计值时遇到了一些问题。 我可以正确读取加速度计值,并且它们在我的应用程序中以有意义的方式显示;我可以将它们打印到文本标签上。
但是,一旦我尝试在数学运算中使用它们(比如减法,在代码中标有注释),应用程序就会崩溃并出现以下错误:
Unsupported operand type(s) for -: ‘NoneType’ and ‘NoneType’
代码如下:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock
from plyer import accelerometer
from plyer import gravity
import numpy as np
class TestApp(App):
def __init__(self):
super(TestApp, self).__init__()
self.sensorEnabled= False
self.acc= np.array([0, 0, 0])
self.grav= np.array([0, 0, 0])
self.lineal= np.array([0, 0, 0])
def leer_accel(self, dt):
self.acc= np.asarray(accelerometer.acceleration)
self.grav= np.asarray(gravity.gravity)
test= self.acc[0]- self.grav[0] #THIS LINE CRASHES THE APP!!
self.root.ids['a_x'].text= f"{str(self.acc)}"
self.root.ids['a_y'].text= f"{str(type(self.acc))}"
self.root.ids['a_z'].text= " "
#self.root.ids['g_x'].text= " "
#self.root.ids['g_y'].text= " "
self.root.ids['g_z'].text=f"{self.acc- self.grav}"
def empezar(self):
try:
if not self.sensorEnabled:
accelerometer.enable()
gravity.enable()
Clock.schedule_interval(self.leer_accel, 1/100)
self.sensorEnabled= True
self.root.ids['boton_1'].text= "Parar"
else:
accelerometer.disable()
Clock.unschedule(self.leer_accel)
self.sensorEnabled= False
self.root.ids.boton_1.text= "Empezar"
except NotImplementedError:
import traceback
traceback.print_exc()
self.root.ids.status.text= "Accelerometro no soportado"
App= TestApp()
App.run()
有一些东西(很明显)我确定我错过了,因为变量存在并且我可以访问它们以将它们打印出来,但是我还没有发现错误。
谢谢
【问题讨论】: