Tkinter,忽略 tcl 文件中的某些行?

Tkinter, ignore certain lines from a tcl file?

基本上,我只想删除用于在 ttk.Treeview 小部件中滚动的鼠标滚轮绑定。我发现文件中的特定行位于

Python.framework/Versions/3.9/lib/tk8.6/ttk/treeview.tcl 

负责它,如果删除,将禁用用于滚动视图的鼠标滚轮:

ttk::copyBindings TtkScrollable Treeview 

但是,我不想影响内置文件。 我唯一的解决方案是创建 py2app bundle 并从包内的 treeview.tcl 中删除同一行。但是有没有直接的方法在 script.py 文件中执行此操作而不影响 tcl 文件?

您不必修改原始代码。 Tkinter 的事件处理机制非常健壮。很容易防止默认绑定 运行,绑定绑定 returns 字符串“break”的函数。返回“break”将阻止调用小部件绑定标签中的任何其他处理程序。

这是一个简短的人为示例:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

tree = ttk.Treeview(root)
tree.pack(side="top", fill="both", expand=True)
for i in range(20):
    tree.insert("", "end", text=f"Item #{i+1}")

tree.bind("<MouseWheel>", lambda event: "break")
root.mainloop()

请注意,如果您使用的是基于 x11 的系统,您可能必须禁用 <Button-4><Button-5> 的绑定,而不是 <MouseWheel>