Partage
  • Partager sur Facebook
  • Partager sur Twitter

kivy passer une image en argument

    22 juin 2024 à 8:05:11

    Bonjour à tous,

    j'essaie de concevoir une app pour androîd qui vise a prendre des photos, et à y insérer d'autres images.

    Le souci c'est que je n'arrive pas à utiliser ma variable img dans d'autre fonctions. voici mon code:

    import kivy
    
    from kivy.app import App
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.image import Image
    from kivy.uix.label import Label
    from kivy.uix.button import Button
    from kivy.uix.dropdown import DropDown
    
    kivy.require('2.3.0')
    
    a = 0
    
    class Ecran(BoxLayout):
        def __init__(self):
            super(Ecran, self).__init__()
    
        def capture(self):
            global a
            
            camera = self.ids['camera']
            camera.export_to_png("IMG_{}.png".format(a))
            print("Captured")
            self.clear_widgets()
            img = Image(source="IMG_{}.png".format(a))
            a+=1
            
            dropdown = DropDown()
            
            for index in range(10):
    
                if index == 0:
                    btn = Button(text='Directionnel \npiétons', size_hint_y=None, height=44, on_release=self.choix)
                    btn.bind(on_release=lambda btn: dropdown.select(btn.text))
                    dropdown.add_widget(btn)
                elif index == 1:
                    btn = Button(text='Directionnel \nvéhicules', size_hint_y=None, height=44, on_release=self.choix)
                    btn.bind(on_release=lambda btn: dropdown.select(btn.text))
                    dropdown.add_widget(btn)
                elif index == 2:
                    btn = Button(text='Flèche', size_hint_y=None, height=44, on_release=self.choix)
                    btn.bind(on_release=lambda btn: dropdown.select(btn.text))
                    dropdown.add_widget(btn)
                elif index == 3:
                    btn = Button(text='Stop', size_hint_y=None, height=44, on_release=self.choix)
                    btn.bind(on_release=lambda btn: dropdown.select(btn.text))
                    dropdown.add_widget(btn)
                    
            mainbutton = Button(text='Choix de la \nsignalétique', size_hint=(None, None))
            mainbutton.bind(on_release=dropdown.open)
            dropdown.bind(on_select=lambda instance, x: setattr(mainbutton, 'text', x))
    
            img.add_widget(mainbutton)
            #img2 = Image(source="images/jaune.png")
            #img2.pos = (200, 100)
            #img.add_widget(img2)
            self.add_widget(img)
            
        def choix(self, btn):
            
            if btn.text == "Directionnel \npiétons":
                
                img2 = Image(source="images/jaune.png")
                self.aff_panneau(img2)
                
            elif btn.text == "Directionnel \nvéhicules":
                print("BIEN")
            elif btn.text == "Flèche":
                print("PARFAIT")
            elif btn.text == "Stop":
                print("NICKEL")
    
        def aff_panneau(self, img2):
    
            self.add_widget(img2)
            
    
    
            
            
    class ParkingMaster(App):
        def build(self):
            return Ecran()
    
    parkingmaster = ParkingMaster()
    parkingmaster.run()
    


    j'aimerais récupérer img dans

    def aff_panneau

     si quelqu'un à une idée, je l'en remerie d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2024 à 9:37:27

      Salut,

      Il suffit d'en faire un attribut (self), idem pour ta variable a

      • Partager sur Facebook
      • Partager sur Twitter
        22 juin 2024 à 16:00:06

        Bonjour Garkam, c'est ce que je fais habituellement, mais pour une raison qui m'ai totalement inconnue, ça ne fonctionne pas avec IMG ni avec a. J'obtiens toujours le même message d'erreur.
        • Partager sur Facebook
        • Partager sur Twitter
          22 juin 2024 à 17:08:43

          Modifiez votre code comme proposé par @Garkam, puis copiez collez votre code et le message d'erreur...
          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

          kivy passer une image en argument

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown