Creat list ?(Recycleview)

22 views
Skip to first unread message

La Prise

unread,
Apr 2, 2019, 12:21:04 PM4/2/19
to Kivy users support

i have a project for my schools is to create an mobile app. So i choice langage python with librairie kivy Now my problem is to create and list cause i write all my code in python langage and i don't found example or somethings like that all example i found is with kv langage.I'd like to someone help me how to use recycleview or listview in python langage. In the future this list will act according to a database with msqlite.

I try to use "builder" but i have nothing to do.

import kivy
    from kivy.core.window import Window
    from kivy.app import App
    from kivy.uix.label import Label
    from kivy.uix.floatlayout import FloatLayout
    from kivy.uix.button import Button
    from kivy.graphics import Color, Rectangle
    from kivy.uix.screenmanager import ScreenManager, Screen,WipeTransition
    from kivy.config import Config
    from kivy.uix.textinput import TextInput
    from kivy.uix.slider import Slider
    from kivy.uix.popup import Popup
    from kivy.graphics import *
    from kivy.lang import Builder
    from kivy.uix.recycleview import RecycleView




    sm = ScreenManager(transition=WipeTransition())


    class MenuScreen(Screen):
        def build(self):
            #Forme des boutons
            with self.canvas:
                Color(1,0.32,0,1)
                Ellipse(pos=(130, 170), size=(200, 200))#Inventaire
                Ellipse(pos=(480, 170), size=(200, 200))#Reccettes
                Color(0.54,0.01,0.01,1)
                Ellipse(pos=(355, 30), size=(100, 100))#Quitter
            #Nom Forme
            self.name='Accueil'
            Accueil=FloatLayout
            self.size=Window.size
            #Texte
            Text1=Label(text='Healthy Food',font_size='60',font_name='impact',color=[0.23,1,0,1],size_hint=(.5,.5),pos=(200,350))
            self.add_widget(Text1)
            #Bouton Inventaire
            InventaireB=Button(text='Inventaire',font_name='impact',font_size='30',background_normal="",background_color=[0,0,0,0],size_hint=(.2,.4),pos=(150,150))
            InventaireB.bind(on_press=self.VersI)
            self.add_widget(InventaireB)
            #Bouton Recettes
            RecettesB=Button(text='Recettes',font_name='impact',font_size='30',background_normal="",background_color=[0,0,0,0],size_hint=(.2,.4),pos=(500,150))
            RecettesB.bind(on_press=self.VersR)
            self.add_widget(RecettesB)
            #Bouton de Sortie
            SortieB=Button(text='Quitter',font_name='impact',font_size='20',size_hint=(.2,.2),pos=(325,20),background_normal="",background_color=[0,0,0,0])
            SortieB.bind(on_press=self.Quitter)
            self.add_widget(SortieB)

        def Quitter(self,obj):
            App.get_running_app().stop()
            Window.close()

        def VersI(self,instance):
            Inventaire=Inventaire_Screen()
            Inventaire.build()
            sm.add_widget(Inventaire)
            sm.current='Inventaire'

        def VersR(self,instance):
            Recette=Recette_Screen()
            Recette.build()
            sm.add_widget(Recette)
            sm.current='Recette'

    class Recette_Screen(Screen):
        def build(self):
            with self.canvas:
                Color(0.54,0.01,0.01,1)
                Ellipse(pos=(50,10), size=(80, 80))#retour
            #Nom
            self.name='Recette'
            #Texte
            Text3=Label(text="Recettes",font_size='60',font_name='impact',color=[0.23,1,0,1],size_hint=(.5,.5),pos=(200,400))
            self.add_widget(Text3)
            #Bouton retour
            Bretour=Button(text='Retour',font_name='impact',font_size='15',size_hint=(.1,.1),pos=(50,20),background_normal="",background_color=[0,0,0,0])
            Bretour.bind(on_press=self.Retour1)
            self.add_widget(Bretour)

        def Retour1(self,instance):
            Menu=MenuScreen()
            sm.add_widget(Menu)
            sm.current='Accueil'

    class Inventaire_Screen(Screen):

        def build(self):
            with self.canvas:
                Color(0.54,0.01,0.01,1)
                Ellipse(pos=(50,10), size=(80, 80))#retour
                Color(1,0.32,0,1)
                Ellipse(pos=(595, 0), size=(150, 100))#Ajouter un élément
            #Nom 
            self.name='Inventaire'
            #Texte
            Text2=Label(text="L'inventaire",font_size='60',font_name='impact',color=[0.23,1,0,1],size_hint=(.5,.5),pos=(200,400))
            self.add_widget(Text2)
            #Bouton retour
            Bretour=Button(text='Retour',font_name='impact',font_size='15',size_hint=(.1,.1),pos=(50,20),background_normal="",background_color=[0,0,0,0])
            Bretour.bind(on_press=self.Retour1)
            self.add_widget(Bretour)
            #Liste

            #Bouton ajouter un élément
            Bajout=Button(text='Ajouter un élément',font_name='impact',font_size='15',size_hint=(.3,.1),pos=(550,20),background_normal="",background_color=[0,0,0,0])
            Bajout.bind(on_press=self.VersQ)
            self.add_widget(Bajout)

        def VersQ(self,instance):
            quantite=Quantite_Screen()
            quantite.build()
            sm.add_widget(quantite)
            sm.current='Quantité'

        def Retour1(self,instance):
            Menu=MenuScreen()
            sm.add_widget(Menu)
            sm.current='Accueil'

    class Quantite_Screen(Screen):

        def build(self):
            #Nom
            self.name='Quantité'
            Text5=Label(text="Ajouter un élément",font_size='60',font_name='impact',color=[0.23,1,0,1],size_hint=(.5,.5),pos=(200,400))
            self.add_widget(Text5)
            #Quantité
            Text4=Label(text="Quantités: ",font_size='30',font_name='impact',color=[0,0,0,1],size_hint=(.2,.2),pos=(300,280))
            self.add_widget(Text4)
            Slide1=Slider(orientation='horizontal',min=0,max=50,size_hint=(.3, None),pos=(250,250))
            self.add_widget(Slide1)
            Slide1.bind(value=self.Valeur)
            self.Text5=Label(text='0',font_size='30',font_name='impact',color=[0,0,0,1],size_hint=(.2,.2),pos=(380,280))
            self.add_widget(self.Text5)
            #Input
            Text3=Label(text="Nom du produit",font_size='30',font_name='impact',color=[0,0,0,1],size_hint=(.2,.2),pos=(300,400))
            self.add_widget(Text3)
            Input1=TextInput(text="Entrez un nom",font_size='15',font_name='impact',size_hint_x=0.3,size_hint_y=0.05,pos=(250,400),multiline=False)
            self.add_widget(Input1)
            #Bouton valider
            Bvalider=Button(text='Valider',font_name='impact',font_size='15',size_hint=(.1,.1),pos=(330,200))
            Bvalider.bind(on_press=self.Pop)
            Bvalider.on_release=self.Valider
            self.add_widget(Bvalider)

        def Valider(self):
            Inventaire=Inventaire_Screen()
            Inventaire.build()

            sm.current='Inventaire'


            #Pop-up
        def Pop(a,b):
        box=FloatLayout()
        #Texte
        Lab1=Label(text="Vos éléments ont bien étaient ajouter à votre frigo",size_hint=(None,None),pos=(350,300))
        box.add_widget(Lab1)
        #Bouton
        B1=Button(text='OK',font_size='15',size_hint=(1.0,None),pos=(210,115))
        box.add_widget(B1)
        popup1=Popup(title='Ajout des éléments',content=box,auto_dismiss=False,size_hint=(None, None), size=(400, 400))
        popup1.open()
        B1.on_release=popup1.dismiss

        def Valeur(self,instance,test):
            self.Text5.text = "%d"%test


    class Myapp(App):
        def build(self):
            self.title='Healthy-Food'
            Menu=MenuScreen()
            Menu.build()
            sm.add_widget(Menu)
            sm.current='Accueil'
            sm.bind(size=self.fond, pos=self.fond)
            with sm.canvas.before:
                Color(0.15,0.55,0.92,1)
                self.rect = Rectangle(size=sm.size, pos=sm.pos)
            return sm  
        def fond(self, instance, value):
            self.rect.pos = instance.pos
            self.rect.size = instance.size

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


I would like to people help me to creat an list with 2 column and which i can interact like remove 1 element.

Reply all
Reply to author
Forward
0 new messages