微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当您按下鼠标并将鼠标悬停在其上时,您如何更改多个 tkinter 按钮的状态?

如何解决当您按下鼠标并将鼠标悬停在其上时,您如何更改多个 tkinter 按钮的状态?

我有一个二维数组的 tkinter 按钮。

看起来像这样:

enter image description here

我希望能够点击一个按钮,按住我的鼠标,当我按下鼠标时,每个悬停在上面的按钮都会改变颜色。到目前为止,如果您将鼠标悬停在任何方块上,无论是否按下鼠标按钮,它都会改变颜色。

到目前为止,代码看起来像这样:

def draw(self,i,j):
    button = self.buttons[i][j] 
    button.bind('<Enter>',lambda event: self.on_enter(event,button))


def on_enter(self,e,button):
    button['background'] = 'green'

明确地说,我希望能够在按住左键并同时悬停按钮时更改按钮的颜色。

谢谢你帮助我。

编辑:删除代码图片并提供了可以复制和粘贴的内容

第二次编辑:代码大约 100 行,但要点是 tkinter 按钮的二维数组,我提供的代码显示了负责更改按钮颜色的 2 个函数。如果需要更多代码,我会把它放进去。

解决方法

您可以将根窗口上的 <B1-Motion> 绑定到回调。然后在回调中,使用 .winfo_pointerxy() 获取鼠标位置并使用 .winfo_containing() 查找鼠标指针下方的按钮并更改其背景颜色:

示例:

def on_drag(event):
    x,y = root.winfo_pointerxy()
    btn = root.winfo_containing(x,y)
    if btn:
        btn.config(bg="green")

# root is the root window
root.bind('<B1-Motion>',on_drag)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。