
рдореИрдВрдиреЗ рдЕрдЬрдЧрд░
рдХреАрд╡реА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдФрд░ рдЕрдкрдиреЗ рдЖрд╣рд╛рд░ рдореЗрдВ рд╡рд┐рд╡рд┐рдзрддрд╛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЖрд╡реЗрджрди рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рд▓реЗрдЦ рдирд╡рд╛рдЧрдВрддреБрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рд╡реА рдХреЗ рд▓рд┐рдП рд╣реИред рдЖрд╡реЗрджрди рдХреЛрдб рдХреА рд▓рдЧрднрдЧ 100 рд▓рд╛рдЗрдиреЗрдВ рд▓реЗрддрд╛ рд╣реИред
рдмрд╛рдЗрдХ
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп:
- рднреЛрдЬрди рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рджреЛрд╣рд░рд╛рд╡ рд╕реЗ рдмрдЪреЗрдВред рдЖрджреЗрд╢ рдореЗрдВ рдПрдХ рд╣реА рдкрдХрд╡рд╛рди рдмрд╣реБрдд рдмрд╛рд░ рдирд╣реАрдВ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
- рдЙрди рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреЛ рдордд рднреВрд▓реЛ рдЬреЛ рдореИрдВрдиреЗ рдЦрд╛рдпрд╛, рдлрд┐рд░ рднреВрд▓ рдЧрдпрд╛, рдФрд░ рд╕рд╛рд▓реЛрдВ рддрдХ рдЙрдирдХреЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдХреЙрд░реНрди рдпрд╛рдж рдирд╣реАрдВ рдерд╛ред рдпрд╣ рдореЗрд░реЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред
рдкрд░рд┐рдЪрдп
рдЖрдк рдХрд┐рд╕реА рднреА рдЧреАрдд рдореЗрдВ рдЗрдВрдЯреНрд░реЛ рдореЗрдВ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдПрдХ рджреЗрд╢ рдореЗрдВ рд░рд╣рдирд╛ рдерд╛, рдПрдХ рд╣реЛрдЯрд▓ рдореЗрдВ, рдЬрд╣рд╛рдБ рдореБрдЭреЗ рдирд╛рд╢реНрддреЗ рдХреЗ рд▓рд┐рдП рд░реЛрдЬрд╝ рдЕрдВрдбреЗ рджрд┐рдП рдЬрд╛рддреЗ рдереЗ рдФрд░ рдЗрд╕рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдорд╣реАрдиреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдЦреБрдЬрд▓реА рд╢реБрд░реВ рдХрд░ рджреАред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЪрд┐рдХрд┐рддреНрд╕рд╛ рд╕рд╣рд╛рдпрддрд╛ рдорд╛рдВрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ред рдХрдбрд╝рд╡реЗ рдЕрдиреБрднрд╡ рд╕реЗ рддрдВрдЧ рдЖрдХрд░, рдЙрд╕рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЛрдВрдиреЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП рднреЛрдЬрди рдореЗрдВ рдХреБрдЫ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рд╢рд░реАрд░ рдореЗрдВ рдХреБрдЫ рднреА рдЬрдорд╛ рди рд╣реЛ рд╕рдХреЗред рдпрд╣ рдореЗрд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл рдмрддрд╛рддрд╛ рд╣реВрдВ, рдмрд┐рдирд╛ рд▓рдЧрд╛рдПред рд╢рд╛рдпрдж рдЕрдкрд╡рд╛рдж рдХреЗ рдмрд┐рдирд╛ рдХреЛрдИ рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИрдВ, рд╢рд╛рдпрдж рджрд▓рд┐рдпрд╛ рдХреЛ рджрд╢рдХреЛрдВ рддрдХ рд╣рд░ рджрд┐рди рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ

рдорд╛рди рд▓реАрдЬрд┐рдП рдореЗрд░реЗ рдЖрд╣рд╛рд░ рдореЗрдВ 50 рд╡реНрдпрдВрдЬрди рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЖрдЬ рдПрдХ рдЖрдорд▓реЗрдЯ рдЦрд╛рдпрд╛ред рдореИрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЖрдорд▓реЗрдЯ рд▓рд╛рдЗрди 50 рд▓рд╛рдЗрди рдкрд░ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рдордиреЗ 49 рд╡реНрдпрдВрдЬрди рд╣реИрдВ рдЬреЛ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд╛рдКрдВрдЧрд╛ред рдпрд╣ рдЖрд╡реЗрджрди рдХрд╛ рдкреВрд░рд╛ рддрд░реНрдХ рд╣реИред (рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ, рд╡реНрдпрдВрдЬрди рдкрдХрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рднреА рд╕рдВрдпреЛрдЧ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣реИрдВ, рдЙрдирдХрд╛ рдореЗрд░реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд╣рд╛рд░ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ)ред
рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
main.pyfrom kivy.app import App from kivy.uix.button import Button from kivy.uix.boxlayout import BoxLayout from kivy.uix.screenmanager import ScreenManager, Screen from kivy.uix.recycleview import RecycleView from kivy.uix.gridlayout import GridLayout from kivy.core.window import Window from kivy.config import ConfigParser from kivy.uix.textinput import TextInput from kivy.uix.label import Label from kivy.metrics import dp from datetime import datetime import os import ast import time class MenuScreen(Screen): def __init__(self, **kw): super(MenuScreen, self).__init__(**kw) box = BoxLayout(orientation='vertical') box.add_widget(Button(text=' ', on_press=lambda x: set_screen('list_food'))) box.add_widget(Button(text=' ', on_press=lambda x: set_screen('add_food'))) self.add_widget(box) class SortedListFood(Screen): def __init__(self, **kw): super(SortedListFood, self).__init__(**kw) def on_enter(self):
рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ kv рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рд╢реИрдХреНрд╖рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдЬрдЧрд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рд╕рдм рдХреБрдЫ рдирдВрдЧреЗ рдЕрдЬрдЧрд░ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдореЗрдВ, рдореИрдВ рдЕрдЬрдЧрд░ рдХреЛрдб рдХреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рдХрд┐рд╡реА рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реВрдВрдЧрд╛ред
рдЖрдЗрдП рдЬрд╛рдиреЗ:
class MenuScreen(Screen):
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рд╛рд░рдВрдн рдкреГрд╖реНрда рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЗрд╕реЗ рдХреБрдЫ рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрд╕реНрдХреНрд░реАрдиред рдФрд░ рдХреАрд╡реА рд╕реНрдХреНрд░реАрди рдореЙрдбреНрдпреВрд▓ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ 3 рд╡рд┐рдВрдбреЛ рд╣реИрдВ, рдпреЗ рд╡рд┐рдВрдбреЛ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ box = BoxLayout(orientation='vertical')
BoxLayout рд╕реНрдХреНрд░реАрди рдХреЛ рдмрд░рд╛рдмрд░ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреНрд╖реИрддрд┐рдЬ, рдореИрдВрдиреЗ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ = 'рд╡рд░реНрдЯрд┐рдХрд▓' рд▓рд┐рдЦрд╛ Button(text=' ', on_press=lambda x: set_screen('list_food'))
рдмрдЯрди - рдмрдЯрди рдмрдирд╛рддрд╛ рд╣реИ, рдСрди_рдкреНрд░реЗрд╕ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рджрдмрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
.add_widget()
- рдкрд░рддреЛрдВ рдФрд░ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдЬреЛрдбрд╝рддрд╛ рд╣реИ self.layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
рдЧреНрд░рд┐рдб рд▓реЗрдЖрдЙрдЯ рдПрдЪрдЯреАрдПрдордПрд▓ рдореЗрдВ рдЯреЗрдмрд▓ рдЯреИрдЧ рдХреА рдХреБрдЫ рд╣рдж рддрдХ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓рдо - рдХреЙрд▓рдо рдпрд╛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ - рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред
рдЖрдк рджреЛрдиреЛрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдХреНрд░реАрди рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
root = RecycleView(size_hint=(1, None), size=(Window.width, Window.height))
RecycleView - рд╡рд╣ рдореЙрдбреНрдпреВрд▓ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╡рд░реНрдЯрд┐рдХрд▓ рд╕реНрдХреНрд░реЙрд▓ рдмрдирд╛рдирд╛ рд╣реИред RecycleView рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╣реА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реЙрд▓ рдмрдирд╛рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдПрдХ рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдореЙрдбреНрдпреВрд▓ рд╣реИ, рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реЙрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд░реАрд╕рд╛рдпрдХрд▓ рд╡реНрдпреВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
config.get('General', 'user_data')
- рдХреЛрдб рдореЗрдВ рдРрд╕реА рд▓рд╛рдЗрдиреЗрдВ рдЕрдХреНрд╕рд░ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИрдВред рдореИрдВ рд╕рд┐рд░реНрдл рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрд╢реА рд╡рд┐рдиреНрдпрд╛рд╕ kivy рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛ред рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдХрдИ рд╣рдЬрд╛рд░ рд╡реНрдпрдВрдЬрди рд╣реИрдВ, рдпрд╣ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдмрдЧреАрдЪреЗ рдХреЛ рд╕реНрдХреНрд▓реЗрд▓рд╛рдЗрдЯ рдФрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрд╛рдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПред рд╕рднреА рдбреЗрдЯрд╛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рдпрдВред
рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдФрд░ рд▓рд╛рдЗрдирдХреНрд╕ рдФрд░ рдореИрдХреЛрд╕ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
рд╕рднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рдорд╛рди рд╣реИ:
- рд╣рдордиреЗ рдкрд╛рдпрдерди 3 рд▓рдЧрд╛рдпрд╛
- рд╣рдордиреЗ рдХрд┐рд╡реА рд▓рдЧрд╛рдИ
- рд╣рдо рдореЗрдирдлреНрд░реЗрдо рдлрд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░реЗ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЛ рдЙрд╕рдореЗрдВ рдЪрд┐рдкрдХрд╛ рджреЗрддреЗ рд╣реИрдВ
- рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ
python3 main.py
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдкреАрдХреЗ рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╕рд╛рде рдлреЛрди рдкрд░ рдЪрд▓рд╛рдПрдВ
рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдЬрдЧрд░ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рдмрдирд╛рдПрдВ рддрд╛рдХрд┐ рдЗрд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╕рд╛рде рдлреЛрди рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ? рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рдмрд▓реНрдХрд┐ рдкрд░рд┐рд╖реНрдХреГрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдереА рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХреМрд╢рд▓ рдФрд░ рдПрдХ рдирдЦрд░реЗ рдХреЗ рд╕рд╛рде рдиреГрддреНрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред рдЕрдм рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдирд┐рд░реНрджреЗрд╢ рд╣реИ:
- рдХрд┐рд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рддреИрдпрд╛рд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред https://github.com/Zen-CODE/kivybits/blob/master/KivyCompleteVM/ReadMe.txt ред рдкрд╛рд╕рд╡рд░реНрдб: рдХреАрд╡реА
- рд╣рдо рдЗрд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдмреЙрдХреНрд╕ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВред
- рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:
- рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдмрд┐рди рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдПрдХ рд╣реА рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдмрдирд╛рддрд╛ рд╣реИ, рдмрд┐рди рдореЗрдВ рдЖрдкрдХреЛ рдлрд╛рдЗрд▓ рдлреВрдбрдЯреЙрдкреНрд╕-0.1-рдбреАрдмрдЧ.рдкреИрдХ рдорд┐рд▓реЗрдЧрд╛, рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рдлреЛрди рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

рдлреЛрди рдореЗрдВ рдПрдкреАрдХреЗ рдлрд╛рдЗрд▓ рдХреИрд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ?рдмреЗрд╢рдХ, рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдбрд╛рдХ рд╕реЗ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдХрд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐, рдФрд░ рдлрд┐рд░ рдЕрдкрдиреЗ рдлреЛрди рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдг рд╣реИред рд╣рдо рдлреЛрди рдкрд░ рдбреЗрд╡рд▓рдкрд░ рдореЛрдб рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдПрдХ рдпреВрдПрд╕рдмреА рдХреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдкрдиреЗ рдлреЛрди рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рд╕реНрдерд╛рдкрд┐рдд рдЕрджрдм:
sudo apt install adb
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдмрд┐рди рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ
adb install -r foodoptions-0.1-debug.apk
рдФрд░ рдЖрдк рдлреЛрди рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рдлрд▓рддрд╛ред
kivy@kivy-complete:~/Project/FoodOptions/bin$ adb install -r foodoptions-0.1-debug.apk 342 KB/s (10083019 bytes in 28.730s) Success kivy@kivy-complete:~/Project/FoodOptions/bin$
рдпрджрд┐ рдЕрдЪрд╛рдирдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдПрдХ рдЖрджреЗрд╢ рд╣реИ
adb logcat| grep python
рд░реВрд╕реА рдЖрд╡реЗрджрди рдирд╛рдордпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рд░реВрд╕реА рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдлреВрдб рдбрд╛рдпрд░реА", рддреЛ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
.buildozer/android/platform/build/dists/foodoptions/templates/strings.tmpl.xml
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд░реВрд╕реА рдирд╛рдо рдРрдкрдирд╛рдо рдЯреИрдЧ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдлрд╝реЛрд▓реНрдбрд░ рдмрд┐рд▓реНрдбрдУрдЬрд╝рд░ рдПрдВрдбреНрд░реЙрдЗрдб рдбреАрдмрдЧ рдХреЗ рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, FoodOptions рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ buildozer android рдбреАрдмрдЧ рдЪрд▓рд╛рдПрдВред рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдирдП рддрд░реАрдХреЗ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдлреЛрди рдкрд░ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдирд╛рдо рд░реВрд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
Buildozer.spec рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВрдпрд╣рд╛рдБ рдореЗрд░реА github рдлрд╝рд╛рдЗрд▓ рд╣реИ:
buildozer.specрдпрд╣ рдлрд╝рд╛рдЗрд▓ рдмрд┐рд▓реЛрдЬрд╝рд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред
рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рд╡рд┐рдзрддрд╛рдПрдВ рд╣реИрдВред рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рдЕрдВрджрд░ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:
cd /tmp buildozer init
рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ buildozer.spec рдлрд╝рд╛рдЗрд▓ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЖрдЗрдХрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд▓рд╛рдЗрди рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ:
icon.filename = %(source.dir)s/data/icon.png
рдПрдХ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рдЖрдкрдХреА рдлрд╝рд╛рдЗрд▓ред рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдкрдХреЗ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдХрдЯреНрдард╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ = рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, buildozer.spec рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛рдиреА рдПрдХ рд╕рдВрдкреВрд░реНрдг рд▓реЗрдЦ, рдпрд╛ рджреЛ рднреА рд▓реЗ рд╕рдХрддреА рд╣реИред
Google Play рдкрд░ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВрдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛, рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдЧреБрдЬрд░рдирд╛, рдЪрд╛рдмрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдФрд░ рдлрд┐рд░ рдЪрд▓рд╛рдПрдВ:
sudo apt install zipalign buildozer android release jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /path/keystore bin/apk-unsigned.apk apkname zipalign -v 4 bin/apk-apkname-unsigned.apk bin/apk-apkname-release.apk
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдлрд╝рд╛рдЗрд▓ apk-apkname-release.apk Google Play рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред
рд╕рдВрджрд░реНрдн
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рдЕрдЬрдЧрд░ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ:
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реБрдВрджрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ
- рдХреЛрдб рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП kv рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред рдореИрдВ рдПрдХ рд╕рд╛рджреГрд╢реНрдп рджреЗрддрд╛ рд╣реВрдБ: рдЬреЛ рд▓реЛрдЧ рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, HTML рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ HTML рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВред Kv-files рдореЗрдВ рдмрдЯрди, рд▓реЗрдпрд░реНрд╕ рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдПрдХ рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП jinja2 рдЬреИрд╕рд╛ рд╣реИред рддрд░реНрдХ .py рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдЙрдм kv рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред
- рдЧрдгрдирд╛ рдХреИрд▓реЛрд░реА, рдкреНрд░реЛрдЯреАрди, рдХрд╛рд░реНрдмреЛрд╣рд╛рдЗрдбреНрд░реЗрдЯ, рд╡рд╕рд╛ (BJU) рдЬреЛрдбрд╝реЗрдВ
- рд╡реНрдпрдВрдЬрди рдлреЛрдЯреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВ