Aide pour tkinter
3.1415926535897932384626433832795028
-
3.14159265358979 Messages postés 3 Statut Membre -
3.14159265358979 Messages postés 3 Statut Membre -
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
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
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 :
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()
"""____________________________________________________________________"""
"""---------------------------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()
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:
Sinon, une doc sympa:
https://python.developpez.com/cours/apprendre-python3/
il y a comment faire aussi des menus déroulants
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