Движущиеся объекты tkinter оставляют призрачный след - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь переместить кучу объектов.Их позиция обновлена ​​на 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...