代码之家  ›  专栏  ›  技术社区  ›  someoneeee_2ee

kivymd对main.kv的挤压

  •  0
  • someoneeee_2ee  · 技术社区  · 3 年前

    我检查了日志,但没有错误 使用buildozer、python 3.11、kivy、kivymd、plyer编译的应用程序 我允许在buildozer.spec中使用gps,并导入了所有模块,但它仍然崩溃 我可以给你日志,但没有错误 当我在笔记本电脑上运行这个应用程序时,它会正常工作,不会崩溃

    from kivy.app import App
    from kivy.lang import Builder
    from plyer import gps
    from kivy.uix.label import Label
    from kivy.utils import platform
    from kivymd.app import MDApp
    from kivy.uix.widget import Widget
    from kivymd.uix.toolbar import MDTopAppBar
    from kivy.properties import StringProperty
    kv='''
    MDBoxLayout:
        orientation: "vertical"
        MDTopAppBar:
            title: "Hello world!" 
            right_action_items: [["dots-vertical", lambda x: app.callback()]]
        MDLabel:
            text: app.gps_status
            halign: "center"
        MDLabel:
            text: app.gps_location
            halign: "center"
        MDSwitch:
            active: False 
            pos_hint: {"center_x": .5, "center_y": .5}
            width: dp(45)
            on_active: app.start(*args)
    '''
    
    class Main(MDApp):
        gps_location = StringProperty()
        gps_status = StringProperty()
        def request_android_permissions(self):
            import android
            from android.permissions import request_permissions, Permission
            def callback(permissions, results):
                droid = android.Android()
                if all([res for res in results]):
                    droid.makeToast("callback. All permissions granted.")
                else:
                    droid.makeToast("callback. Some permissions refused.")
                    
            request_permissions([Permission.ACCESS_COARSE_LOCATION,
                    Permission.ACCESS_FINE_LOCATION], callback)
        def build(self):
            try:
                        gps.configure(on_location=self.on_location)
            except NotImplementedError:
                        self.gps_status = 'GPS is not implemented for your platform'
            if platform == "android":
                self.request_android_permissions()
                gps.configure(on_location=self.on_location)
            return Builder.load_string(kv)
        def on_location(self, **kwargs):
            self.gps_location = '\n'.join([
            '{}={}'.format(k, v) for k, v in kwargs.items()])   
        def start(self, minTime, minDistance):
            gps.start(minTime, minDistance) 
            droid.makeToast("programm started")
        def stop(self):
            droid.makeToast("programm stopped")
            gps.stop()
    
    if __name__ == "__main__":
        Main().run()
    
    
    
    
    0 回复  |  直到 3 年前