Что-то в методе drop_target_register (), кажется, отключает щелчок по строке меню до тех пор, пока файл не будет помещен в цель удаления.Я хотел бы, чтобы меню работало независимо от того, есть ли файл в перетаскивании.
Я использую Python 3.6.4, и это простой кусок кода, который отображает проблему.
from tkinter import *
from TkinterDnD2 import *
def drop(event):
entry_sv.set(event.data)
root = TkinterDnD.Tk()
menubar = Menu(root)
menu = Menu(menubar, tearoff=0)
menu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=menu)
root.config(menu=menubar)
entry_sv = StringVar()
entry_sv.set('Drop Here...')
entry = Entry(root, textvar=entry_sv)
entry.pack(fill=X)
entry.drop_target_register(DND_FILES)
entry.dnd_bind('<<Drop>>', drop)
root.mainloop()
В PyCharm «drop_target_register» и «dnd_bind» оба отображают сообщение:
«Неразрешенная ссылка на атрибут« drop_target_register »для класса« Entry »Эта проверка обнаруживает имена, которые должны разрешаться, нонет. Из-за динамической отправки и утки это возможно в ограниченном, но полезном количестве случаев. Элементы верхнего уровня и уровня класса поддерживаются лучше, чем элементы экземпляра. "
Тем не менее,перетаскивание работает.