всякий раз, когда я делаю анимацию, где действительно быстро рисуется что-то новое, когда открывается tk, анимация намного медленнее, чем должна быть
, однако скорость окна tk изменяется в следующих случаях:
- «удерживая» окно tk - оно останавливается и затем продолжает работать быстрее, но не совсем так, как хотелось
- при выпуске - оно продолжается с медленной скоростью (как при первом открытии tk)
- Перемещение окна tk - чем быстрее вы двигаетесь, тем быстрее анимация получает
- Агрессивное встряхивание - освобождает после встряхивания, в конце концов оставляет его на необходимой скорости
вы можете наблюдать это здесь:
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)