Tkinter 中的绑定函数问题

问题描述 投票:0回答:1

我报告了我的代码的简化可运行版本,我试图绑定到我的 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()
python oop tkinter treeview ttk
1个回答
0
投票

将第 12 行中的

self.bind("<Double-1>", self.on_double_click)
更改为
self.bind("<Double-Button-1>", self.on_double_click)
。我检查过,它适用于此更改。

© www.soinside.com 2019 - 2024. All rights reserved.