Я сообщил об упрощенной работоспособной версии моего кода, в которой я пытаюсь привязаться к своему 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()
Какую ОС вы используете? Какой оконный менеджер вы используете?
Попробуйте использовать это. self.bind("<Control-Button-1>", self.on_single_click). Теперь и одинарные, и двойные разделены.






Замените self.bind("<Double-1>", self.on_double_click) на self.bind("<Double-Button-1>", self.on_double_click) в строке 12. Я проверил, и это работает с этим изменением.
Спасибо, это помогло решить проблему в моем MRE, но не в полномасштабном коде... в любом случае спасибо.
Я забыл проверить наличие обновлений для всех библиотек, в которых на самом деле была проблема.
Кажется, ваш пример кода работает нормально!?