【问题标题】:Python Kivy rotating an image using an integerPython Kivy 使用整数旋转图像
【发布时间】:2021-08-23 23:29:33
【问题描述】:

我正在使用 Kivy 库为我在 Pi 端使用 Python 通过 Arduino 和 Raspberry Pi 编码的数据记录器系统制作仪表显示

我正在尝试相对于整数变量(油温)旋转图像(量规指针)

python 代码可以很好地存储整数,但我正在努力根据 Kivy 中的整数设置图像的旋转

我最好在 Kivy 中执行此操作还是使用 PyGame 之类的更简单的东西?

这是我目前的 Python/Kivy 代码,它显示仪表图像和针在彼此的顶部,但我卡住的区域在第二张图像中

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout

float = OilTemp = 180

class CustomRow(FloatLayout):
    pass


class CustomGrid(FloatLayout):
    pass


kv = '''
FloatLayout:
    Widget:    
        
    RelativeLayout:  
        Image:
            source: 'OilTempV3.png'
            size_hint: (1, 0.5)
            pos_hint: {'x': 0, 'y': 0} 
        Image:
            source: 'NeedleV1.png'
            size_hint: (1, 0.48)
            pos_hint: {'x': 0, 'y': 0}
            canvas.before:
                PushMatrix
                Rotate:
                    angle: OilTemp
                    origin: self.center
'''


class RotationApp(App):
    def build(self):
        return Builder.load_string(kv)


RotationApp().run()

【问题讨论】:

    标签: python user-interface kivy


    【解决方案1】:

    当您将kv 中的属性设置为普通变量时,该属性会在加载kv 时设置为该变量的值。之后更改变量不会影响kv 中的属性。如果您希望该属性跟踪更改,您应该使用Property。您可以创建NumericProperty,但任何Property 都必须在EventDispatcher 中创建,例如WidgetApp

    class RotationApp(App):
        OilTemp = NumericProperty(180)
    

    然后,在kv 中,您可以将这个Property 用作app.OilTemp

            canvas.before:
                PushMatrix
                Rotate:
                    angle: app.OilTemp
                    origin: self.center
            canvas.after:
                PopMatrix
    

    您通常应该在之后添加一个PopMatrix 以限制Rotate 的影响。

    【讨论】:

    • 感谢您的帮助。这似乎更有意义,但它似乎不喜欢 NumericPropety。我需要定义另一行吗?
    • OilTemp = NumericProperty(180) 行定义了NumericProperty。请注意,它应该像我所展示的那样出现在 RotationApp 类中,但不在任何方法中。
    • 我放错地方了,菜鸟错了。感谢大家的帮助
    猜你喜欢
    • 2020-05-14
    • 1970-01-01
    • 2022-01-13
    • 2022-09-30
    • 2012-12-03
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多