Aide pour tkinter

Signaler
-
Messages postés
3
Date d'inscription
dimanche 22 novembre 2020
Statut
Membre
Dernière intervention
22 novembre 2020
-
Bonjour,

j'essaye de programmer sur python à l'aide de tkinter quelque chose qui s'approche du logiciel géogébra (logiciel pour tracer des figures géométriques). Pour l'instant j'ai réussit à ouvrir une fenêtre tkinter et à faire en sorte qu'un point soit créé lorsque l'on clique dessus. Mais j'aimerais créer comme sur géogébra une barre horizontale en haut de ma fenêtre tkinter qui contiendrait des boutons qui, lorsqu'on clique dessus change le statut d'une variable et donc la fonction lorsque l'on clique sur la fenêtre tkinter. ex: on a appuyé sur un bouton "point" le clique appel la fonction tracePoint (sauf si on clique sur un autre bouton) et si on clique sur le bouton "droite" les deux cliques suivants génèrent une droite...etc

Configuration: Windows / Firefox 83.0

3 réponses

Messages postés
641
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
24 novembre 2020
79
Bonjour pi,

Pourrais-tu nous afficher ton code ici ?

L'indentation étant importante en Python, merci de re poster ton code avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci :

def test():
    print('test')

test()
Messages postés
3
Date d'inscription
dimanche 22 novembre 2020
Statut
Membre
Dernière intervention
22 novembre 2020

"""____________________________________________________________________"""

"""---------------------------Initialisation---------------------------"""
"""____________________________________________________________________"""
import random
import time
from tkinter import *
root = Tk()
canvas = Canvas(root, width=1600, height=1200, background="white")
canvas.pack(side=LEFT,padx=5,pady=5)






"""_____________________________________________________________________"""

"""---Fonctions exécutées sans interaction avec l'interface graphique---"""
"""_____________________________________________________________________"""
# calculs intermédiaires qui se font juste via python vide pour l'instant









"""____________________________________________________________________"""

"""---Fonctions exécutées en interactions avec l'interface graphique---"""
"""____________________________________________________________________"""

def coord(event):#récupère les coordonèes d'un click
    x=event.x
    y=event.y
    #print("Le clique est détecté à x="+ str(x) +" y="+str(y))
    return(x,y)
    
   

def create_point(event):#créer un point avec un click
    canvas.focus_set()
    x=event.x
    y=event.y
    canvas.create_rectangle(x-2,y-2,x+2,y+2,fill='black')
    print("Point créé à x=",x,",y=",y)
    return

def create_point2(x,y):#créé un point avec des coordonnées
    canvas.focus_set()
    canvas.create_rectangle(x-2,y-2,x+2,y+2,fill='black')
    print("Point créé à x=",x,",y=",y)
    return


global coord_segment
coord_segment=[]
def create_segment(event):#créé un segment
    canvas.focus_set()
    x1,y1=coord(event)
    coord_segment.append([x1,y1])
    if len(coord_segment)>=2:
        canvas.create_line(coord_segment[0][0],coord_segment[0][1],coord_segment[1][0],coord_segment[1][1])
        create_point2(coord_segment[0][0],coord_segment[0][1])
        create_point2(coord_segment[1][0],coord_segment[1][1])
        coord_segment.pop()
        coord_segment.pop()
    return([])

#Association clic/action
canvas.bind("<Button-1>",create_point)  #clique gauche
canvas.bind("<Button-3>",create_segment)#clique droit
"""
<Button-1> click gauche
<Button-2> click molette
<Button-3> click droite
"""

"""____________________________________________________________________"""

"""------------------Lancement de la fenêtre tkinter-------------------"""
"""____________________________________________________________________"""

#Lancement
root.mainloop()


Messages postés
3
Date d'inscription
dimanche 22 novembre 2020
Statut
Membre
Dernière intervention
22 novembre 2020

Ici ce sont les fonction que j'ai pour l'instant, je créer un point avec un clique gauche et un segment avec deux cliques droits, mais j'aimerais gérer les différentes actions via des bouton poussoirs à actioner qui seraient en haut de la fenêtre (comme dans géogébra) ou via un menu déroulant.
Messages postés
641
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
24 novembre 2020
79
Super, c'est très bien

As-tu une doc tkinter pour savoir comment créer des boutons ?

Dans les paramètres du bouton, on peut donner le nom d'une fonction à exécuter

Je te donne un exemple:
def creer_ligne()
    ''' cette fonction créé une ligne'''

button = Button(canvas, text="Créer une ligne", command=creer_ligne)
button.pack(.....


Sinon, une doc sympa:

https://python.developpez.com/cours/apprendre-python3/

il y a comment faire aussi des menus déroulants
Messages postés
3
Date d'inscription
dimanche 22 novembre 2020
Statut
Membre
Dernière intervention
22 novembre 2020

Merci je vais regarder ça