欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

为什么窗口 ,鼠标点右边的 滚动条起作用,,但是鼠标滚轮不起作用,,, chatgpt 有大用 有大大用

你的代码中的问题是,鼠标滚轮无法滚动窗口,可能是因为 TkinterCanvas 部件没有正确配置与滚动条的联动行为。

解决这个问题的方法是,通过绑定鼠标滚轮事件来手动触发滚动。具体来说,你可以将 "<MouseWheel>" 事件绑定到 Canvas 上,这样鼠标滚轮就能在 Canvas 上触发滚动操作。

Tkinter 中,"<MouseWheel>" 事件默认只在 Windows 和 Mac 上有效,并且鼠标滚轮的方向可能与系统的默认方向相反,所以你可能还需要做一些额外的调整。这里有一个修改方案:

def on_mouse_wheel(event):    canvas.yview_scroll(int(-1*(event.delta/120)), "units") # 绑定鼠标滚轮事件 canvas.bind_all("<MouseWheel>", on_mouse_wheel)

解释:

  1. on_mouse_wheel: 这是一个事件处理函数,处理鼠标滚轮事件。event.delta 是滚轮滚动的增量,通常是 120 或 -120,每次滚动 1 单位。

  2. canvas.yview_scroll: 用于垂直滚动 Canvas 的内容。我们传入的参数 int(-1*(event.delta/120)) 计算滚动方向(向上滚动为负值,向下为正值)。

  3. canvas.bind_all("<MouseWheel>", on_mouse_wheel): 将鼠标滚轮事件绑定到 Canvas,这意味着每次鼠标滚轮事件都会触发 on_mouse_wheel 函数。

注意:

  • 如果你在 Linux 上使用 Tkinter,则滚动方向可能需要调整为 "<Button-4>""<Button-5>",因为 Linux 系统使用不同的事件绑定方式。可以根据需要进行调整。

加入这个事件绑定后,鼠标滚轮就能正常工作了,滚动条也会与鼠标滚轮联动。


普通分类: