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 :

Menu Contextuel sur Item sélectionné d'un Treeview


Sujet :

Tkinter Python

  1. #1
    Invité
    Invité(e)
    Par défaut Menu Contextuel sur Item sélectionné d'un Treeview
    Bonjour,

    Le but est d'obtenir un menu contextuel uniquement sur un Item sélectionné dans un treeview.

    Mon code, une fois le item sélectionnée, me donne accès au menu contextuel dans le Treeview

    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
     
    	def Supprimer_Recette():
    		Rec_list.event_generate('<<Supprimer_Recette>>')
     
    	# Création du menu contextuel - widget Rec_list
    	MenuContextuel = Menu(Rec_list, tearoff=0)
    	MenuContextuel.add_command(label="Supprimer", command=Supprimer_Recette)
     
    	def Delete_Recette(event, curItem, Nom_Rec):
    		global Liste
    		Liste = []
     
    		try:
    			# Affiche le menu contextuel
    			MenuContextuel.post(event.x_root, event.y_root)
    			curItem = Rec_list.focus()
    		finally:
    			# make sure to release the grab (Tk 8.0a1 only)
    			MenuContextuel.grab_release()
     
    		curItem = Rec_list.focus()
    		Liste = Rec_list.item(curItem)["values"]
    		# print("TreeView - Rec_list.item(curItem)[", "values", "][0]               ", Rec_list.item(curItem)["values"][0])  # Affiche Nom recette depuis Treeview -- Exemple : Recette_2020.05_8_30.5_NoName
    		# print("Nom_Rec : 																  ", Nom_Rec.get())
     
    		# Suppression Nom Recette dans DB Recettes
    		Recette_DB_BackEnd.supRec(Nom_Rec.get())
    		# Vide Widget Rec_list
    		for u in Rec_list.get_children ():
    			Rec_list.delete(u)
    		# Supprime toutes frames générée
    		Clear_frameSelected()
    		# Affiche nouvelle Etat BD Recettes
    		DisplayData_Recette()
     
           def selectionItem_Recette(a):
           Rec_list.bind('<ButtonRelease-3>', lambda event, curItem=curItem, Non_Rec=Rec_list.item(curItem)["values"][0]: Delete_Recette(event, curItem, Nom_Rec))
    le Item sélectionné est --> Rec_list.item(curItem)["values"][0]
    ça ne fonctionne pas avec --> curItem = Rec_list.focus()

    comment puis y remédier? merci de votre temps

  2. #2
    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,

    Si vous cliquez en event.y, l'item sera retourné par treeview.identify_row(event.y).
    On peut ensuite en faire "la" selection via treeview.selection_set ou le stocker dans une variable/attribut, histoire que la commande déclenchée par le pop-up menu le récupère.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invité
    Invité(e)
    Par défaut
    comme ceci, cela fonctionne bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    		try:
    			# Affiche le menu contextuel
    			# MenuContextuel.tk_popup(event.y_root,0)
    			print("Rec_list.identify_row(event.x)", Rec_list.identify_row(event.y))
    			Rec_list.selection_set(Rec_list.identify_row(event.y))
    			MenuContextuel.tk_popup(event.x_root, event.y_root)
    		finally:
    			# make sure to release the grab (Tk 8.0a1 only)
    			MenuContextuel.grab_release()

  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
    et bien alors ?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Invité
    Invité(e)
    Par défaut
    merci

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

Discussions similaires

  1. supprimer tous les item du menu contextuel sur une extention
    Par patricktoulon dans le forum Windows
    Réponses: 2
    Dernier message: 17/06/2019, 17h25
  2. [Gridview] Menu Contextuel sur l'item
    Par anthyme dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 08/07/2008, 13h50
  3. Menu contextuel sur Treeviewer
    Par henpower dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 28/05/2008, 15h47
  4. définir un menu contextuel sur les items d'un treeview
    Par maa dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 05/05/2008, 19h51
  5. [Fait]Menu contextuel sur un TreeView
    Par Racob dans le forum Contribuez
    Réponses: 3
    Dernier message: 23/10/2007, 02h20

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