Я пытаюсь, чтобы пользователь удалял строки при нажатии правой кнопки мыши. Я привязал событие нажатия кнопки 3 к холсту и передал его следующей функции
def eraseItem(self,event):
objectToBeDeleted = self.workspace.find_closest(event.x, event.y, halo = 5)
if objectToBeDeleted in self.dictID:
del self.dictID[objectToBeDeleted]
self.workspace.delete(objectToBeDeleted)
Однако ничего не происходит, когда я щелкаю правой кнопкой мыши по линиям. Я протестировал словарь отдельно, и объекты строки сохраняются правильно.
Вот моя привязка:
self.workspace.bind("<Button-3>", self.eraseItem)
По запросу некоторые другие фрагменты из инициализации словаря
def __init__(self, parent):
self.dictID = {}
... Some irrelevant code omitted
Для создания линии у меня есть два обработчика: при нажатии и при выпуске, которые рисуют линии между обеими координатами.
def onLineClick(self, event):
self.coords = (event.x, event.y)
def onLineRelease(self, event):
currentLine = self.workspace.create_line(self.coords[0], self.coords[1], event.x, event.y, width = 2, capstyle = ROUND)
self.dictID[currentLine] = self.workspace.coords(currentLine)
print(self.dictID.keys()) #For testing dictionary population
print(self.dictID.values()) #For testing dictionary population
Словарь печатает здесь нормально. Обратите внимание, что это все функции в одном классе.
objectToBeDeleted
. - person A. Rodas   schedule 15.03.2013