Tkinter - 使鼠标滚轮与 Linux 上的可滚动框架一起使用

问题描述

我让这段代码在 Windows 上正常工作:

from tkinter import *
from tkinter import ttk


def _on_mouse_wheel(event):
    my_main_canvas.yview_scroll(-1 * int((event.delta / 120)),"units")


window = Tk()
main_frame = Frame(window)
main_frame.pack(fill=BOTH,expand=YES)
my_main_canvas = Canvas(main_frame)
my_main_canvas.pack(side=LEFT,fill=BOTH,expand=YES)
my_main_scrollbar = ttk.Scrollbar(main_frame,orient=VERTICAL,command=my_main_canvas.yview)
my_main_scrollbar.pack(side=RIGHT,fill=Y)
my_main_canvas.configure(yscrollcommand=my_main_scrollbar.set)
my_main_canvas.bind('<Configure>',lambda e: my_main_canvas.configure(scrollregion = my_main_canvas.bBox("all")))
my_main_canvas.bind_all("<MouseWheel>",_on_mouse_wheel)
new_main_frame = Frame(my_main_canvas,relief=SUNKEN)
my_main_canvas.create_window((0,0),window=new_main_frame,anchor="center",width=window.winfo_screenwidth()-30)
for i in range(100):
    Label(new_main_frame,text=f"Label {i+1}").pack()
window.mainloop()

我想做它的Linux版本。我的问题是我无法使用鼠标滚轮滚动。

我发现必须使用 <Button-4><Button-5> 而不是 <MouseWheel>,并且 _on_mouse_wheel(event) 函数可能需要修改,但我无法弄清楚。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...