首页 > 解决方案 > Python 3.x tkinter 拖放防止菜单可点击?

问题描述

关于 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' 中都显示消息:

“类‘Entry’的未解析属性引用‘drop_target_register’此检查检测到应该解析但不解析的名称。由于动态调度和鸭子类型,这在有限但有用的情况下是可能的。顶级和类-级别项目的支持比实例项目更好。”

也就是说,拖放工作。

标签: pythonpython-3.xtkinterdrag-and-drop

解决方案


推荐阅读