我报告了我的代码的简化可运行版本,我试图绑定到我的 Treeview 以对其执行操作。 我的问题如下: onSingleClick 函数并不总是被触发,onDoubleClick 函数永远不会被触发。
经过一些故障排除后,我认为 self.tableId = 0 是问题的一部分,因为通过删除构造函数上的初始化,错误似乎不太存在。
其次,如果错误已修复,则双击屏幕会触发,单击女巫对于我想要做的事情来说也不是最佳选择,我想知道是否有人对此有一个聪明的解决方案。
感谢您的时间,请帮助我修复此错误!
import tkinter as tk
from tkinter import ttk
class TreeviewM(ttk.Treeview):
def __init__(self, master=None, **kwargs):
super().__init__(master, **kwargs)
self.tableId = 0
# Bind events
self.bind("<Button-1>", self.on_single_click)
self.bind("<Double-1>", self.on_double_click)
def on_single_click(self, event):
print("Single click event triggered")
def on_double_click(self, event):
print("Double click event triggered")
def main():
root = tk.Tk()
root.geometry("1000x800")
columns = ("Name", "Surname")
table = TreeviewM(root, columns=columns, show="headings")
# Define columns and headings
table.column("Name", width=100, anchor="center")
table.column("Surname", width=100, anchor="center")
table.heading("Name", text="Name")
table.heading("Surname", text="Surname")
# Insert data
table.insert("", "end", values=("John", "Doe"))
table.insert("", "end", values=("Jane", "Doe"))
table.pack(fill="both", expand=True)
# Force focus on the widget
table.focus_set()
root.mainloop()
if __name__ == "__main__":
main()
将第 12 行中的
self.bind("<Double-1>", self.on_double_click)
更改为 self.bind("<Double-Button-1>", self.on_double_click)
。我检查过,它适用于此更改。