如何在Tkinter中关闭拖放功能?

2024-10-02 22:38:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些代码:

from tkinter import *
from tkinter.dnd import Tester as DragWindow, Icon as Dragable

# Make a root window and hide it, since we don't need it.
root = Tk()
root.withdraw()
# Make the actual main window, which can have dragable objects on.
main = DragWindow(root)

def make_btn():
    # The functional part of the main window is the canvas.
    Dragable('B').attach(main.canvas)

def dragoff():
    pass  # What do I write here?

# Make a button and bind it to our button creating function.
B1 = Button(main.top, text='A', command=make_btn)
B1.pack()
B2 = Button(main.top, text='Drag Off', command=dragoff)
B2.pack()

root.mainloop()

我正在使用tkinter.dnd作为拖放功能。但我在关闭drag dnd drop时遇到问题。 所以,基本的想法是,当我点击B1时,会创建一个带有按钮的画布,我可以在其中移动它。当我单击B2时,我应该不能在画布中拖放


Tags: thefromimportmakemaintkinterasit
1条回答
网友
1楼 · 发布于 2024-10-02 22:38:30

首先,需要保存Dragable实例的引用:

dragable_item = None

def make_btn():
    global dragable_item
    if dragable_item is None:
        dragable_item = Dragable('B')
        dragable_item.attach(main.canvas)

然后可以调用dragable_item.label.unbind("<ButtonPress>")禁用DnD:

def dragoff():
    if dragable_item:
        dragable_item.label.unbind("<ButtonPress>")

相关问题 更多 >