Kivy - объединение KV с логикой питона - PullRequest
0 голосов
/ 26 сентября 2018

Со вчерашнего дня я борюсь с моим приложением kivy, и я в тупике.

Я начинающий программист, и я решил, что хочу создать приложение в Kivy, с логикой в ​​Python,Приложение будет собирать данные о состоянии устройств, подключенных к сети через REST API.

Rest api работает хорошо, и у меня есть вся необходимая информация.Также моя графическая сторона проекта выполнена.Теперь я хочу соединить эти две вещи в одну.Вот проблема.

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, SlideTransition
from kivy.config import Config
from os import listdir
from kivy.uix.label import Label
from kivy.properties import ObjectProperty
from rest import sniffer


# Window config

Config.set('graphics', 'width', '800')
Config.set('graphics', 'height', '500')
Config.set('graphics', 'resizable', False)
Config.write()

# Variables

mir_list = []
mir_dict = {'MiR_S161': '10.173.175.117',
        'MiR_S162': '10.173.175.121',
        'MiR_S319': '10.173.175.120',
        'MiR_S325': '10.173.175.119',
        'MiR_S326': '10.173.175.116',
        'MiR_S327': '10.173.175.118'
        }

# Kivy

kv_path = './kv/'
for kv in listdir(kv_path):
    Builder.load_file(kv_path+kv)


# Declare screens

class MainScreen(Screen):
    pass

class MiRScreen161(Screen):
pass

class MiRScreen162(Screen):
    pass

class MiRScreen319(Screen):
    pass

class MiRScreen325(Screen):
    pass

class MiRScreen326(Screen):
    pass

class MiRScreen327(Screen):
    pass

# Create the screen manager

sm = ScreenManager(transition = SlideTransition())
sm.add_widget(MainScreen(name='main'))
sm.add_widget(MiRScreen161(name='MiR_S161'))
sm.add_widget(MiRScreen162(name='MiR_S162'))
sm.add_widget(MiRScreen319(name='MiR_S319'))
sm.add_widget(MiRScreen325(name='MiR_S325'))
sm.add_widget(MiRScreen326(name='MiR_S326'))
sm.add_widget(MiRScreen327(name='MiR_S327'))

class MainApp(App):
    def build(self):
        self.title = 'MiR Sniffer'
        return sm



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

Это мой основной код - он относится к другому сценарию .py с обработкой REST, который я написал ранее.

<MainScreen>:
oft = oftbutton
GridLayout:
    cols: 2
    FloatLayout:
        Image:
            size: (400,200)
            source: 'mir-200.png'
            pos_hint: {'left':1, 'top':0.98}
            size_hint: None, None
            allow_stretch: True
            keep_ratio: False
        Label:
            halign: 'left'
            font_size: 70
            size_hint: (None,None)
            size: (140, 10)
            text: 'MiR Sniffer'
            pos: (105,70)
        Label:
            halign: 'left'
            font_size: 15
            size_hint: (None,None)
            size: (140, 10)
            text: 'Igor Czyrski \ngithub.com/czyrski'
            pos: (0,20)

    StackLayout:
        orientation: 'bt-rl'
        Button:
            id: oftbutton
            text: 'MiR_S161'
            size: 200, 75
            size_hint: None, None
            on_release: root.manager.current = 'MiR_S161'
        Button:
            text: 'MiR_S162'
            size: 200, 75
            size_hint: None, None
            on_release: root.manager.current = 'MiR_S162'
        Button:
            text: 'MiR_S319'
            size: 200, 75
            size_hint: None, None
            on_release: root.manager.current = 'MiR_S319'
        Button:
            text: 'MiR_S325'
            size: 200, 75
            size_hint: None, None
            on_release: root.manager.current = 'MiR_S325'
        Button:
            text: 'MiR_S326'
            size: 200, 75
            size_hint: None, None
            on_release: root.manager.current = 'MiR_S326'
        Button:
            text: 'MiR_S327'
            size: 200, 75
            size_hint: None, None
            on_release: root.manager.current = 'MiR_S327'

И это файл kv.

Теперь мне нужно каждые 3 минуты получать обратный вызов функций REST API и представлять вывод в местах текста кнопок.

Я застрял - как я уже сказал, я не умелый программист.Может кто-нибудь взглянуть и попытаться вывести меня на правильный путь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...