[Python] Obtenir le nom d'un bouton

Répondre
Partager Rechercher
Bonjour,

j'ai un petit problème de programmation avec Python. Je précise pour commencer que je suis pas développeur pro donc faudra pas proposer des trucs trop compliqués .

Je programme une interface avec Tkinter et à un moment j'ai une fenêtre avec une dizaine de boutons. Je vous mets le code que j'ai pour les boutons :

Code:
def Button2():
	global i,CHUS,boutons,depart,nomd,fin,nomf,messageDepart,fenChoix,chemin
	i,lieu,id=i+1,CHUS,2
	boutons.append(lieu)
	if i==1:
		depart,nomd=id,lieu
		lieu.place_forget()
		messageDepart.destroy()
		messageFin=Label(fenChoix,text='Choisissez votre lieu darrivee.',bg='white',font=('Calibri',10))
		messageFin.place(x=605,y=360,anchor=SE)
	else:
		fin,nomf=id,lieu
		chemin=dij(depart,fin)
		i=0
		tkMessageBox.showinfo('toto','le chemin est' + str(chemin[1]))
		lignes()
J'ai fait ça en mode bêbête donc j'ai ce code là pour tous les boutons. Je vous laisse imaginer que si je veux changer un morceau de code faut que je le change partout. J'aimerais donc faire un code générique.
Mon problème est le suivant : existe-il une fonction qui me permet de récupérer le nom d'un bouton lorsqu'on clique dessus?

J'ai essayé avec find_closest(event.x,event.y), seul problème ça me renvoie un tuple avec je suppose l'id de l'item pour Tkinter et je peux pas m'en servir.
Une fois que j'aurai le nom du bouton, je le mettrai dans "lieu" et ça devrait marcher. Par exemple, ici le nom du bouton est CHUS.
J'ai eu un problème similaire avec les droites que j'ai dans le canvas, ça a été réglé avec des tags et des recherches d'items par tags, mais là je bloque.

Si quelqu'un a une idée, je suis preneur.
Merci d'avance.
heu... c'est quoi toutes ces variables globales dans ton code ? tu as vraiment besoin que tout ça soit global ? j'ai un doute...

Sinon, je comprends pas bien...
Je ne connais pas Tkinter, mais si Button2 est le handler appelé lorsque tu cliques sur le bouton, normalement cette fonction devrait avoir 2 arguments : l'objet activé (donc le bouton) et l'événement d'activation (clic souris, appui sur [enter], ...)
Bref, avec le premier argument, tu dois pouvoir récupérer le nom du bouton...
Un handler c'est quoi?

Pour les variables globales vu comment j'ai codé (surement comme un cochon vu mon niveau), j'en ai besoin. Quoique, je viens de vérifier je dois pouvoir en enlever.

Je programme une sorte de calcul d'itinéraire primaire, et j'ai décidé de choisir les lieux de départ et d'arrivée avec des boutons. Et c'est justement ces noms de lieux que je voudrais récupérer.


EDIT : problème réglé. J'ai fait une fonction pour tous les boutons avec les éléments dont j'ai besoin en variable. Et je l'ai associé pour tous les boutons.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés