Производительность окна tkinter с быстрой анимацией - PullRequest
0 голосов
/ 27 февраля 2020

всякий раз, когда я делаю анимацию, где действительно быстро рисуется что-то новое, когда открывается tk, анимация намного медленнее, чем должна быть

, однако скорость окна tk изменяется в следующих случаях:

  1. «удерживая» окно tk - оно останавливается и затем продолжает работать быстрее, но не совсем так, как хотелось
  2. при выпуске - оно продолжается с медленной скоростью (как при первом открытии tk)
  3. Перемещение окна tk - чем быстрее вы двигаетесь, тем быстрее анимация получает
  4. Агрессивное встряхивание - освобождает после встряхивания, в конце концов оставляет его на необходимой скорости

вы можете наблюдать это здесь:

import random
import time
import tkinter
canvas = tkinter.Canvas(width=1000, height=600, bg='#003359')
canvas.pack()

raindropsF = {}
raindropsB = {}

canvas.create_rectangle(0,510,1000,600,fill='#232323',outline='#232323');

def raining():
    rainingF()
    rainingB()

def rainingF():
    for iF in list(raindropsF):
        if raindropsF[iF] < 550:
            raindropsF[iF] += 20
            canvas.move(iF, 0, 20)
        else:
            canvas.delete(iF)
            del raindropsF[iF]
    xF = random.randint(0, 1000)
    iF = canvas.create_line(xF, 0, xF, 20, fill='#00CCFF', width=3)
    raindropsF[iF] = 0
    canvas.after(10, rainingF)

def rainingB():
    for iB in list(raindropsB):
        if raindropsB[iB] < 520:
            raindropsB[iB] += 10
            canvas.move(iB, 0, 10)
        else:
            canvas.delete(iB)
            del raindropsB[iB]
    xB = random.randint(0, 1000)
    iB = canvas.create_line(xB, 0, xB, 20, fill='#0077BB', width=1)
    raindropsB[iB] = 0
    canvas.after(10, rainingB)

raining()

так есть ли способ сохранить производительность оконного константы tk

(у меня нет медленного p c)

1 Ответ

0 голосов
/ 27 февраля 2020

добавляя это, мы сохраняем постоянную скорость

tkinter.mainloop()

никогда не находил это полезным, кажется, имеет значение только при обновлении окна 100ms tk

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