Adding a right click context menu with link with multiple widgets? Adding a right click context menu with link with multiple widgets? tkinter tkinter

Adding a right click context menu with link with multiple widgets?


Making as few changes as possible to the current code, you need to do three things:

  1. Create a global variable to hold a reference to the currently selected label.

  2. Inside popup, set this variable to event.widget, which will be the currently selected label.

  3. Inside print_label, print this label's text by accessing its "text" key.

Below is a fixed version of your program. The stuff I changed is in the comment box:

from Tkinter import * # Tkinter -> tkinter in Python 3root = Tk()#############################################################selected = None  # This is the variable mentioned in step 1def print_label():    print selected["text"]  # This is step 3def popup(event):    global selected  # Tell Python that selected is global    menu.post(event.x_root, event.y_root)    selected = event.widget  # This is step 2############################################################## create a popup menumenu = Menu(root, tearoff=0)menu.add_command(label="Display the label", command=print_label)# create the 3 labelslabel1_text=StringVar()label2_text=StringVar()label3_text=StringVar()label1_text.set("my label 1")label2_text.set("my label 2")label3_text.set("my label 3")label1=Label(root, textvariable=label1_text)label2=Label(root, textvariable=label2_text)label3=Label(root, textvariable=label3_text)label1.pack()label2.pack()label3.pack()# attach popup to framelabel1.bind("<Button-3>", popup)label2.bind("<Button-3>", popup)label3.bind("<Button-3>", popup)root.mainloop()