“为”的可能性循环 self.ids kivy python

发布于 2025-01-10 10:03:37 字数 1541 浏览 0 评论 0原文

我试图循环 API 以返回多个飞机位置坐标,但当我只运行 1 个坐标结果时。

我的问题是如何配置它才能执行 for 循环并显示飞机的所有位置?

ma​​in.py

class ExpertServer(Screen):
    
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        data = get_json()

        for i in data:
            self.ids.markerview.lat = i['latitude']
            self.ids.markerview.lon = i['longitude']
            self.ids.markerview.angle = i['heading']


class MyApp(MDApp):
    def build(self):
        Builder.load_file('main.kv')

        self.sm = ScreenManager()
        self.sm.add_widget(Menu(name='menu'))
        self.sm.add_widget(ExpertServer(name='expert'))
        return self.sm


MyApp().run()

ma​​in.kv

#:import MapView kivy_garden.mapview.MapView

<ExpertServer>:
    name: 'expert'
    FloatLayout:
        MapView:            
            zoom: 3
            lat: 0
            lon: 0
            double_tap_zoom: True                
            MapMarkerPopup:
                id: markerview
                lat: 0
                lon: 0
                angle: 180
                source: "map_marker.png"
                canvas.before:
                    PushMatrix
                    Rotate:
                        angle: self.angle
                        origin: self.center
                canvas.after:
                    PopMatrix

结果:

在此处输入图片描述

I'm trying to loop for an API to return multiple aircraft position coordinates, but when I run only 1 coordinate result.

my question is how can i configure it to be able to do a for loop and show all the positions of the aircraft?

main.py

class ExpertServer(Screen):
    
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        data = get_json()

        for i in data:
            self.ids.markerview.lat = i['latitude']
            self.ids.markerview.lon = i['longitude']
            self.ids.markerview.angle = i['heading']


class MyApp(MDApp):
    def build(self):
        Builder.load_file('main.kv')

        self.sm = ScreenManager()
        self.sm.add_widget(Menu(name='menu'))
        self.sm.add_widget(ExpertServer(name='expert'))
        return self.sm


MyApp().run()

main.kv

#:import MapView kivy_garden.mapview.MapView

<ExpertServer>:
    name: 'expert'
    FloatLayout:
        MapView:            
            zoom: 3
            lat: 0
            lon: 0
            double_tap_zoom: True                
            MapMarkerPopup:
                id: markerview
                lat: 0
                lon: 0
                angle: 180
                source: "map_marker.png"
                canvas.before:
                    PushMatrix
                    Rotate:
                        angle: self.angle
                        origin: self.center
                canvas.after:
                    PopMatrix

result:

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文