首页 > 解决方案 > 可以打印来自传感器的值,但不会出现在图表中

问题描述

下面的代码是我的传感器 GUI 显示程序的一部分,它正在“工作”,但我无法获得我真正想要在图表中工作的值。我得到一个NameError: name 'result' is not defined.

我希望将值result显示在字段中,而不是accel0.getAcceleration()让它打印没有问题,并尽我所能尝试全局值、更改数字格式等,但就是无法让它工作。任何帮助将不胜感激!!!

def onAccelerationChange(self, acceleration, timestamp):
    global result
    xA = float(acceleration[0])
    xZ = float(acceleration[2])
    xAngle = xA / xZ
    rads = (math.atan(xAngle))
    result = math.degrees(rads)  ***I want this value to go...***


def plot(self):
    x = ["Load 0", "Load 1", "Load 2", "Load 3"]
    h = [(load0.getVoltageRatio() * 1000), (load1.getVoltageRatio() * 1000), (load2.getVoltageRatio() * 1000), (load3.getVoltageRatio() * 1000)]

    # adding the subplot
    self.plot1.cla()
    self.plot1.bar(x, h)
    self.plot1.set_xlabel("Strain Gauges")
    self.plot1.set_ylabel("PLI")
    self.plot1.set_title("Blade Load")

    Angle = "Angle: " + str***(accel0.getAcceleration())*** + "°"  
    self.text['text'] = Angle

    self.canvas.draw()
    self.canvas.get_tk_widget().pack()

标签: pythontkintercanvas

解决方案


您最初可以在函数外部定义全局。您可以在此处阅读有关全球的信息:

在函数中使用全局变量

但是,您不应该为此使用全局变量,您应该使用类实例变量,因为您已经有了一个类。有关更多信息,请参阅此问题:Python 中的实例变量与类变量

这一切都假设您发布的代码是类的一部分,并且您在某处有一个 main 函数在第二个函数之前调用第一个函数。


推荐阅读