Со вчерашнего дня я борюсь с моим приложением 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 и представлять вывод в местах текста кнопок.
Я застрял - как я уже сказал, я не умелый программист.Может кто-нибудь взглянуть и попытаться вывести меня на правильный путь?