IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GUI Python Discussion :

[Kivy] Tester si le bouton gauche de la souris est enfoncé [Python 3.X]


Sujet :

GUI Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 57
    Points : 41
    Points
    41
    Par défaut [Kivy] Tester si le bouton gauche de la souris est enfoncé
    Bonjour,
    Comment teste-t-on sous Kivy si le bouton gauche de la souris est enfoncé ?
    Je m'y perd avec tous ces "on_touch-down", "on_touch_move", " MotionEvent" etc...
    La doc déjà qu'elle est en Anglais, je la trouve beaucoup moins compréhensible que celle de Pygame (j'avais commencé par là).
    J'ai passé plusieurs jours à décortiquer des exemples et tutos mais là je bloque.
    Il faut dire que je débute dans ce langage.
    Aussi, merci à une bonne âme qui voudrait m'aider

    J'avais oublié de mettre le code. J'en profite pour préciser l'aide que je sollicite.
    Pour la logique du jeu, j'ai besoin de savoir comment tester:
    - si le bouton gauche de la souris est appuyé
    - si la souris a touché une des formes (triangle, demi-cercle, hexagone)
    - si le bouton gauche est relevé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    #Jeu_Car06
    # coding: utf-8
    from kivy.app import App
    from kivy.core.window import Window
    from kivy.core.window import WindowBase
    from kivy.uix.floatlayout import FloatLayout
    from kivy.uix.image import Image
    from kivy.graphics import Rectangle
    from kivy.uix.widget import Widget
     
    class Voiture(Widget):
        def __init__(self,canvas):
            self.canvas=canvas
            #Taille et position:
            self.size=(Window.size[0]*0.4,Window.size[1]*0.4)
            self.pos=(0,Window.size[1]*0.02)
            #Ajout de l'image
            CheminImageVoiture = "Z:\\Projet Jeu\\Images\\Voiture01.png"
            with self.canvas:
                self.dessin = Rectangle(source=CheminImageVoiture,size=self.size, pos=self.pos)
     
    class FormTriangle(Widget):
        def __init__(self,canvas):
            self.canvas=canvas
            #Taille et position:
            self.size=(Window.size[0]*0.08,Window.size[1]*0.08) #Taille du triangle proportionnelement à la taille de fenetre
            self.pos=(500,Window.size[1]*0.01)
            #Ajout de l'image (add_wiget fonctionne aussi):
            CheminImageTriangle = "Z:\\Projet Jeu\\Images\\Triangle3.png"
            with self.canvas:
                self.dessin = Rectangle(source=CheminImageTriangle,size=self.size, pos=self.pos)
            #On associe le mouvement du panier et son image:
            self.bind(pos=self.update_canvas)
     
        def update_canvas(self, *args):#Mise a jour des positions de l'image:
            self.dessin.pos = self.pos
     
    class FormDemi(Widget):
        def __init__(self,canvas):
            self.canvas=canvas
            #Taille et position:
            self.size=(Window.size[0]*0.08,Window.size[1]*0.08) #Taille du demi proportionnelement à la taille de fenetre
            self.pos=(600,Window.size[1]*0.01)
            #Ajout de l'image (add_wiget fonctionne aussi):
            CheminImageDemi = "Z:\\Projet Jeu\\Images\\Demi_02.png"
            with self.canvas:
                self.dessin = Rectangle(source=CheminImageDemi,size=self.size, pos=self.pos)
            #On associe le mouvement du panier et son image:
            self.bind(pos=self.update_canvas)
     
        def update_canvas(self, *args):#Mise a jour des positions de l'image:
            self.dessin.pos = self.pos
     
    class FormHexa(Widget):
        def __init__(self,canvas):
            self.canvas=canvas
            #Taille et position:
            self.size=(Window.size[0]*0.08,Window.size[1]*0.08) #Taille du demi proportionnelement à la taille de fenetre
            self.pos=(700,Window.size[1]*0.01)
            #Ajout de l'image (add_wiget fonctionne aussi):
            CheminImageHexa = "Z:\\Projet Jeu\\Images\\Hexag_02.png"
            with self.canvas:
                self.dessin = Rectangle(source=CheminImageHexa,size=self.size, pos=self.pos)
            #On associe le mouvement du panier et son image:
            self.bind(pos=self.update_canvas)
     
        def update_canvas(self, *args):#Mise a jour des positions de l'image:
            self.dessin.pos = self.pos
     
    class Jeu(FloatLayout):
        def debut(self):
            self.size=Window.size # recuperation de la taille de l'ecran:
            #print(self.size)
            CheminImageDeFond = "Z:\\Projet Jeu\\Images\\Sky_Grasslands_Hill_1327x1024.jpg" # création de l'image de fond:
            self.add_widget(Image(source=CheminImageDeFond,allow_stretch=True,keep_ratio=False))
            self.voiture=Voiture(self.canvas) #Creation de la voiture:
            # ---------------------- Creation des formes ----------------------------------
            self.formTriangle=FormTriangle(self.canvas)
            self.formDemi=FormDemi(self.canvas)
            self.formHexa=FormHexa(self.canvas)
     
        def on_touch_move(self,touch):                              
            if self.formTriangle.collide_point(touch.x,touch.y):    
                print('YES')                                        
                self.formTriangle.center_x=touch.x                  
                self.formTriangle.center_y=touch.y                  
     
            elif self.formDemi.collide_point(touch.x,touch.y):    
                print('YES')
                print(touch.x , touch.y)                           
                self.formDemi.center_x=touch.x                  
                self.formDemi.center_y=touch.y                  
     
            elif self.formHexa.collide_point(touch.x,touch.y):    
                print('YES')
                print(touch.x , touch.y)                           
                self.formHexa.center_x=touch.x                  
                self.formHexa.center_y=touch.y                  
     
     
        def update(self,ev):
            if ev.type == MOUSEBUTTONDOWN and ev.button == 1 and self.collidepoint(ev.pos):
                self.selected = True
     
    class CarApp(App):
        def build(self):
            New_game=Jeu()#Creation du jeu
            New_game.debut()#Initialisation du jeu
            return New_game#Envoie de l'affichage
     
    if __name__ == '__main__':
        CarApp().run()

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 57
    Points : 41
    Points
    41
    Par défaut
    Bonsoir,

    Ok, j'ai fini par trouver.
    Voila pour ceux que ça intéresse.

    Ainsi pour savoir si le bouton gauche de la souris est enfoncé, il faut créer une fonction "on_touch_down" qui réagit à chaque évènement que produit l'enfoncement d'un des boutons de la souris.
    Ensuite il faut dans cette fonction tester la valeur de "touch_button" qui peut être left ou right.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def on_touch_down(self, touch):
        if touch.button == "left":
            print("Le bouton gauche est enfoncé")
    Pour tester si le bouton de la souris est relâché, il faut créer une fonction "on_touch_up" qui réagit à chaque événement que produit le relâchement du bouton de la souris. (Je suppose qu'il est inutile de tester quel bouton est relâché).
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def on_touch_up(self, touch):
        ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. besoin d'aide sur trigger
    Par devalender dans le forum SQL
    Réponses: 2
    Dernier message: 18/07/2004, 22h28
  2. [D7] Besoin d'aide sur un PChar
    Par bobby-b dans le forum Langage
    Réponses: 6
    Dernier message: 30/06/2004, 16h42
  3. Filemaker ... besoin d'aide sur les Plugin
    Par joange dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 22/04/2004, 10h16
  4. [intermedia] besoin d'aide sur script PL/SQL
    Par SteelBox dans le forum PL/SQL
    Réponses: 8
    Dernier message: 05/01/2004, 19h59
  5. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo