欢迎各位兄弟 发布技术文章
这里的技术是共享的
你的代码中的问题是,鼠标滚轮无法滚动窗口,可能是因为 Tkinter 的 Canvas 部件没有正确配置与滚动条的联动行为。
解决这个问题的方法是,通过绑定鼠标滚轮事件来手动触发滚动。具体来说,你可以将 "<MouseWheel>" 事件绑定到 Canvas 上,这样鼠标滚轮就能在 Canvas 上触发滚动操作。
在 Tkinter 中,"<MouseWheel>" 事件默认只在 Windows 和 Mac 上有效,并且鼠标滚轮的方向可能与系统的默认方向相反,所以你可能还需要做一些额外的调整。这里有一个修改方案:
on_mouse_wheel: 这是一个事件处理函数,处理鼠标滚轮事件。event.delta 是滚轮滚动的增量,通常是 120 或 -120,每次滚动 1 单位。
canvas.yview_scroll: 用于垂直滚动 Canvas 的内容。我们传入的参数 int(-1*(event.delta/120)) 计算滚动方向(向上滚动为负值,向下为正值)。
canvas.bind_all("<MouseWheel>", on_mouse_wheel): 将鼠标滚轮事件绑定到 Canvas,这意味着每次鼠标滚轮事件都会触发 on_mouse_wheel 函数。
如果你在 Linux 上使用 Tkinter,则滚动方向可能需要调整为 "<Button-4>" 和 "<Button-5>",因为 Linux 系统使用不同的事件绑定方式。可以根据需要进行调整。
加入这个事件绑定后,鼠标滚轮就能正常工作了,滚动条也会与鼠标滚轮联动。