Ваш код работает точно так, как задумано.Вы создали действительно огромный виджет надписей (40 символов в ширину, 20 символов в высоту или примерно 350x325 пикселей в зависимости от шрифта вашей системы и настроек разрешения).Поэтому, когда вы думаете, что нажимаете за пределами ярлыка, это не так, поскольку он занимает все окно.
Чтобы понять, что я имею в виду, присвойте ярлыку отличительный цвет фона.Например:
w = Label(root, text="Right-click to display menu", width=40, height=20, background="pink")
Выше приведено окно, похожее на следующее изображение.Везде, где вы щелкаете по розовому цвету, это часть ярлыка, и поэтому будет отображаться меню.
