我有一个按钮网格(10X10)。我想在按钮上生成鼠标拖动事件,所有选定的按钮都应该用红色显示。我在Python中使用Tkinter GUI。如果可能,所选按钮应限制在选择第一个按钮的同一行。
for x in range(10):
temp_buttons = []
for y in range(10):
b = tk.Button(player1Frame,text=" ",height=2, width=3,padx=8,pady=8)
b.bind('<Button-3>', onRightClick)
b.bind('<Button-1>',onClick)
b.grid(row=x, column=y)
temp_buttons.append(b)
y = y + w
x=x+w
y=0
player1Buttons.append(temp_buttons)
player1Frame.pack(side = LEFT)
我生成网格的代码。
答案 0 :(得分:1)
要管理拖动,您需要绑定到事件<B1-Motion>
。事件的回调包括表示事件的对象。该对象的一个属性是对接收事件的窗口小部件的引用。
使用您发布的代码查看的一种简单方法是在窗口小部件上添加行和列作为属性。然后,您可以在事件处理程序中打印出该行和列。
首先,为窗口小部件指定一个属性:
b.location = (x,y)
接下来,创建一个打印位置的回调:
def onDrag(event):
button = event.widget
print("dragging row %s column %s" % button.location)
最后,添加绑定:
b.bind("<B1-Motion>", onDrag)