如何关闭 Tkinter 中的拖放功能?
How to turn off drag and drop in Tkinter?
我有一些代码:
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
进行拖放功能。但是我在关闭拖放时遇到了问题。
所以,基本思路是,当我单击 B1
时,会创建一个 Canvas,其中包含一个按钮,我可以在其中移动它。当我点击 B2
时,我应该无法在 canvas.
中拖放
首先你需要保存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>")
我有一些代码:
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
进行拖放功能。但是我在关闭拖放时遇到了问题。
所以,基本思路是,当我单击 B1
时,会创建一个 Canvas,其中包含一个按钮,我可以在其中移动它。当我点击 B2
时,我应该无法在 canvas.
首先你需要保存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>")