Kivy:如何基于inpu连续旋转图像

2024-04-16 09:35:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个覆盆子圆周率创建一个程序的方向舵反馈指示器在船上。在

几乎一个电位计连接到方向舵,一个可变电压被发送到一个模拟到数字转换器连接到我的Pi。在

我可以使用输入显示我当前的舵角(以文本形式) 但是我希望它能够旋转图像我必须充当刻度盘(或量规)

我希望角度不断更新,并出现在图形用户界面上。 如何获得一个函数来引用我的.KV文件中的旋转角度?在

这将在程序首次运行时起作用,但不会在整个程序中更新

class RudderAngle(Screen):
def __init__(self, **kwargs):
    super(RudderAngle, self).__init__(**kwargs)
    Clock.schedule_interval(self.Print_Rudder,0.02)
def Print_Rudder(self, *args):
    angle = mcp.read_adc(7)
    deg = angle/17.0
    dega = angle/17.0

    if deg<=30:
        ri = (30-deg)
        colour = [0, 1, 0, 1]
        angle = 90-dega*3
    if deg==30:
        ri = (0)
        colour = [0,0,0,1]
        angle = 0
    if deg>30:
        ri = (deg-30)
        colour = [1, 0, 0, 1]
        angle =-(dega*3)+90

    ri = math.floor(ri)
    ri = int(ri)
    ri = str(ri)

    rai = self.ids.rudderposition
    ind1 = self.ids.ind
    rai.text = ri
    rai.color = colour
    ind1.angle = angle
    return angle

—————————————————————————————————————————————————————————

^{pr2}$

Tags: self程序ifinitdefkwargs角度print
1条回答
网友
1楼 · 发布于 2024-04-16 09:35:39

对于这些情况,必须创建一个属性并使用角度执行绑定,对于这种情况,使用NumericProperty

.py

...
from kivy.properties import NumericProperty


class RudderAngle(Screen):
    angle_of_rudder = NumericProperty()
    def __init__(self, **kwargs):
        super(RudderAngle, self).__init__(**kwargs)
        Clock.schedule_interval(self.Print_Rudder,0.02)

    def Print_Rudder(self, *args):
        ...
        ind1.angle = angle
        self.angle_of_rudder = angle

root = Builder.load_file("main.kv")

class TestApp(App):
    def build(self):
        return root

if __name__ == '__main__':
    TestApp().run()

主电压kv

^{pr2}$

相关问题 更多 >