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

Tkinter Python Discussion :

tkinter/python3 - demande d'infos


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 27
    Points : 20
    Points
    20
    Par défaut tkinter/python3 - demande d'infos
    bonjour a tous et toutes.

    j'aimerais avoir une information sur un tuto... (LE tuto) que je suis en train de suivre.

    j'aimerais déjà savoir si il est possible de lien à la méthode bind d'autres évènements que ceux du clavier ou de la souris.... genre une fonction par exemple...

    bon vu ce que j'ai pu trouver sur le net, je pense que non, donc si c'est bien le cas, je vais vous expliquer en gros ce que je veux faire.
    on me demande d'afficher dans une fenêtre un texte indiquant une distance qui bien sur sera susceptible de varier.

    donc moi je voulais utiliser la méthode coords au label en y utilisant un bind. mais je bloque.

    merci de votre aide

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Si tu montres un exemple simplifié de ton code, ce sera plus simple à expliquer.

    Le bind lie un évènement à une fonction. Un label est un widget inerte, pas un objet dynamique. Par contre on peut utiliser une lambda avec le bind, mais pour ça, un exemple sera mieu.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    bonjour
    voici le code:

    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
     
    from tkinter import *
    from math import *
     
    #calcul de la distance
    def dist(a, b, c, d, e, f, g, h):
        X1 = (a+b)//2
        Y1 = (c+d)//2
        X2 = (e+f)//2
        Y2 = (g+h)//2
        A = pow(X1-X2,2)
        B = pow(Y1-Y2,2)
        return sqrt(A+B)
     
    ##affichage distance
    #creer une fonction qui modifiera un texte
    def affichdist():
        global x1, y1, x2, y2
        distance = dist(x1,x1+10,y1,y1+10,x2,x2+20,y2,y2+20)
        chaine1.configure(text="distance entre les astres = "+distance)
    #deplacements des astres
    #astre1
    def depl1(hb,gd):
        global x1,y1
        x1,y1 = x1+gd, y1+hb
        canv.coords(oval1,x1,y1,x1+10,y1+10)
     
    def haut1():
        depl1(-10,0)
     
    def bas1():
        depl1(10,0)
     
    def gche1():
        depl1(0,-10)
     
    def dte1():
        depl1(0,10)
     
    #astre2
    def depl2(hb,gd):
        global x2,y2
        x2, y2 = x2+gd, y2+hb
        canv.coords(oval2, x2, y2, x2+20, y2+20)
     
    def haut2():
        depl2(-10,0)
     
    def bas2():
        depl2(10,0)
     
    def gche2():
        depl2(0,-10)
     
    def dte2():
        depl2(0,10)
     
     
    ##main
    x1,y1,x2,y2 = 10,10,150,150
     
     
     
    ##interface##
    fen1 = Tk()
     
    canv = Canvas(fen1,height=300,width=300,bg='white')
    canv.bind()
    canv.grid(row=0,column=0,rowspan=7,columnspan= 4,pady=5,padx=5)
     
    ##astre 1
    oval1 = canv.create_oval(x1,y1,x1+10,y1+10,fill="red")
     
    Button(fen1,text='haut',command=haut1).grid(row=0,column=5)
    Button(fen1,text='gauche',command=gche1).grid(row=1,column=4)
    Button(fen1,text='droite',command=dte1).grid(row=1,column=6)
    Button(fen1,text='bas',command=bas1).grid(row=2,column=5)
     
    Label(fen1,text="astre 1").grid(row=1,column=5)
     
     
    ##astre 2
    oval2 = canv.create_oval(x2,y2,x2+20,y2+20,fill="dark blue",width=2)
     
    Button(fen1,text='haut',command=haut2).grid(row=4,column=5)
    Button(fen1,text='gauche',command=gche2).grid(row=5,column=4)
    Button(fen1,text='droite',command=dte2).grid(row=5,column=6)
    Button(fen1,text='bas',command=bas2).grid(row=6,column=5)
     
    Label(fen1,text="astre 2").grid(row=5,column=5)
     
    ##affichage distance
    chaine1 = Label(fen1)
    chaine1.grid(row=17, column=0)
     
    ##affichage force gravitationnelle
    #creer une fonction qui modifiera un texte
     
     
     
    fen1.mainloop()
    je ne l'ai pas re vérifier en gros ce que je veux c'est afficher le label chaine1. je n'ai pas mis le bind encore.
    merci

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,
    Pourquoi ne pas appeler affichdist lorsque les deplX sont appelés?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    permet moi de tester tout ça et je reviendrai te donner mon avis... je ne sais pas pourquoi mais j'ai comme l'impression cette évidence va me mettre quelque peu mal à l'aise...

    edit:
    et bien comme prévu l'évidence m'a joué des tours. =) merci pour votre aide
    et à titre d'informations je mets le code final (sait-on jamais)
    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
    from tkinter import *
    from math import *
     
    #calcul de la distance
    def dist(a, b, c, d, e, f, g, h):
        X1 = (a+b)//2
        Y1 = (c+d)//2
        X2 = (e+f)//2
        Y2 = (g+h)//2
        A = pow(X1-X2,2)
        B = pow(Y1-Y2,2)
        return sqrt(A+B)
     
    ##affichage distance
    #creer une fonction qui modifiera un texte
    def affichdist():
        global x1, y1, x2, y2
        distance = dist(x1,x1+10,y1,y1+10,x2,x2+20,y2,y2+20)
        chaine1.configure(text="distance entre les astres = "+str(distance))
    
    #deplacements des astres
    #astre1
    def depl1(hb,gd):
        global x1,y1,x2,y2
        x1,y1 = x1+gd, y1+hb
        canv.coords(oval1,x1,y1,x1+10,y1+10)
        affichdist()
     
    def haut1():
        depl1(-10,0)
     
    def bas1():
        depl1(10,0)
     
    def gche1():
        depl1(0,-10)
     
    def dte1():
        depl1(0,10)
     
    #astre2
    def depl2(hb,gd):
        global x2,y2
        x2, y2 = x2+gd, y2+hb
        canv.coords(oval2, x2, y2, x2+20, y2+20)
        affichdist()
    
    def haut2():
        depl2(-10,0)
     
    def bas2():
        depl2(10,0)
     
    def gche2():
        depl2(0,-10)
     
    def dte2():
        depl2(0,10)
     
     
    ##main
    x1,y1,x2,y2 = 10,10,150,150
     
     
     
    ##interface##
    fen1 = Tk()
     
    canv = Canvas(fen1,height=300,width=300,bg='white')
    canv.bind()
    canv.grid(row=0,column=0,rowspan=7,columnspan= 4,pady=5,padx=5)
     
    ##astre 1
    oval1 = canv.create_oval(x1,y1,x1+10,y1+10,fill="red")
     
    Button(fen1,text='haut',command=haut1).grid(row=0,column=5)
    Button(fen1,text='gauche',command=gche1).grid(row=1,column=4)
    Button(fen1,text='droite',command=dte1).grid(row=1,column=6)
    Button(fen1,text='bas',command=bas1).grid(row=2,column=5)
     
    Label(fen1,text="astre 1").grid(row=1,column=5)
     
     
    ##astre 2
    oval2 = canv.create_oval(x2,y2,x2+20,y2+20,fill="dark blue",width=2)
     
    Button(fen1,text='haut',command=haut2).grid(row=4,column=5)
    Button(fen1,text='gauche',command=gche2).grid(row=5,column=4)
    Button(fen1,text='droite',command=dte2).grid(row=5,column=6)
    Button(fen1,text='bas',command=bas2).grid(row=6,column=5)
     
    Label(fen1,text="astre 2").grid(row=5,column=5)
     
    ##affichage distance
    chaine1 = Label(fen1)
    chaine1.grid(row=17, column=0)
     
    ##affichage force gravitationnelle
    #creer une fonction qui modifiera un texte
     
     
     
    fen1.mainloop()
    merci à tous! je reviendrai ^^

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

Discussions similaires

  1. [Débutant] Demande d'info sur OpenGL
    Par SkyDev dans le forum OpenGL
    Réponses: 2
    Dernier message: 01/03/2005, 23h58
  2. Réponses: 7
    Dernier message: 18/08/2004, 15h08
  3. Demande d'info sur treeview
    Par Anaxagore dans le forum IHM
    Réponses: 6
    Dernier message: 28/08/2003, 18h27
  4. [Rave]Personne ne l'utilise ?? Demande d'info...
    Par Barbibulle dans le forum Rave
    Réponses: 4
    Dernier message: 07/11/2002, 23h12

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