user1908278
user1908278

Reputation: 101

kivy plyer GPS - Converting data to string

Im having difficulty converting the data contained within the variable 'gps_location' to a string, this will then allow me to play with the data.

I have attempted to covert to string using str(variable) but this has not worked, have also added .show to the end of the variable and .text

from kivy.lang import Builder
from plyer import gps
from kivy.app import App
from kivy.properties import StringProperty
from kivy.clock import Clock

kv = '''
BoxLayout:
    orientation: 'vertical'

    Label:
        text: app.gps_info

    Label:
        text: app.gps_location

    Label:
        text: app.gps_status

    BoxLayout:
        size_hint_y: None
        height: '48dp'
        padding: '4dp'

        ToggleButton:
            text: 'Start' if self.state == 'normal' else 'Stop'
            on_state: app.gps.start() if self.state == 'down' else app.gps.stop()
'''

def mainthread(func):
    # This method is now part of Kivy 1.8.0. When it's released, remove it.
    def delayed_func(*args, **kwargs):
        def callback_func(dt):
            func(*args, **kwargs)
        Clock.schedule_once(callback_func, 0)
    return delayed_func


class GpsTest(App):

    gps_location = StringProperty()
    gps_status = StringProperty('Click Start to get GPS location updates')
    gps_info = str(gps_location)


    def build(self):
        self.gps = gps
        try:
            self.gps.configure(on_location=self.on_location,
                on_status=self.on_status)
        except NotImplementedError:
            import traceback; traceback.print_exc()
            self.gps_status = 'GPS is not implemented for your platform'

        return Builder.load_string(kv)

    @mainthread
    def on_location(self, **kwargs):
        self.gps_location = '\n'.join([
            '{}={}'.format(k, v) for k, v in kwargs.items()])

    @mainthread
    def on_status(self, stype, status):
       self.gps_status = 'type={}\n{}'.format(stype, status)

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

Thanks for your time

Upvotes: 0

Views: 2255

Answers (1)

brousch
brousch

Reputation: 1072

The Plyer GPS Example has some code to help you out. https://github.com/kivy/plyer/blob/master/examples/gps/main.py#L54

Upvotes: 0

Related Questions