Я пытаюсь переместить кучу объектов.Их позиция обновлена на onMouseMove
.Перемещение объектов даже чуть-чуть быстрее оставит чистый след призрака.Кто-нибудь может предложить что-то о том, как избежать призрачного следа? Вот мой код:
def onCanvasLeftMouseDown(self, event):
self.mIsCanvasLeftMouseDown = True
self.mOnMouseDownX = event.x
self.mOnMouseDownY = event.y
def onCanvasMouseMove(self, event):
self.mMouseX = event.x
self.mMouseY = event.y
if (self.mIsCanvasLeftMouseDown):
self.mMouseMoveLimiter = self.mMouseMoveLimiter + 1
if (self.mMouseMoveLimiter > 10):
self.mMouseMoveLimiter = 0
difX = self.mMouseX - self.mOnMouseDownX
difY = self.mMouseY - self.mOnMouseDownY
for panel in self.mPanelList:
baseX = panel.initalX
baseY = panel.initalY
panel.x = baseX + difX
panel.y = baseY + difY
def onCanvasLeftMouseUp(self, event):
self.mIsCanvasLeftMouseDown = False
Я также пытался использовать функцию animate и вызывать после "after (1, self.animate)".Однако стало еще хуже, поэтому я решил оставить анимационный код внутри onMouseMove
.
. Обратите внимание, что объект Panel
на самом деле является canvas
с 3 Tkinter Text
дочерними виджетами.Родитель (Master
) для canvas
внутри объекта Panel
- это еще один большой canvas
, который также является моим фоном.
Просто чтобы быть тщательным вот основнойчасть кода класса Panel:
class TATDPanel:
def __init__(self, master, node):
self.mCanvas = Canvas(self.mMaster, width=self.mCanvasWidth, height=self.mCanvasHeight, bg='gray')
self.mFormTextBox = Text(self.mCanvas, width=self.mFormTextBoxWidth, height=self.mFormTextBoxHeight)
self.mFormTextBox.tag_configure("center", justify='center')
self.mUPosTextBox = Text(self.mCanvas, width=5, height=0.6)
self.mUPosTextBox.tag_configure("center", justify='center')
self.mIndexTextBox = Text(self.mCanvas, width=3, height=0.6)
self.mIndexTextBox.tag_configure("center", justify='center')
Обновление 01: Здесь есть ссылка на весь проект, ссылка будет работать только в течение 1 дня.https://www.dropbox.com/s/yi9ja9zkqo9xcjy/Dependency%20Parsing.rar?dl=0