Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Tk.Canvas : 1000 двигающихся объектов. Too slow. Canvas медленно двигает объекты 
:(
    Опции темы
yeputons
Дата 10.7.2010, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 1.4.2009
Где: Санкт-Петербург

Репутация: нет
Всего: 5



Проблема такова: мне требуется отобразить на Tkinter.Canvas очень много объектов (пусть даже 400). Объекты небольшие (закрашенные кружочки с радиусом 16 пикслей) и должны двигаться. Сейчас есть код, который в цикле for вызывает метод canv.coords(id, ...) для каждого объекта.
Уже на 150 кружочках ЦП грузится на 30% (Celeron 1.8GGz). Если двигать не все, а 10 кружочков, то загрузка - 5-6%. FPS требуется >= 24 (т.е. realtime)
Вопрос: как можно поднять производительность canvas.coords? Может, как-нибудь запретить перерисовку (на неё же всё тратится?) перед циклом и разрешить после?

Код для тестирования такой:
Код

#!/usr/bin/python
from Tkinter import *
import random

root = Tk()

canv = Canvas(root, width=640, height=480)
canv.pack()

canv.create_rectangle(0, 0, 640, 480, fill="white")

root.resizable(0, 0)

COUNT=150
elements=[]
for i in range(0, COUNT):
  elements.append(canv.create_oval(320 - 8, 240 - 8, 320 + 8, 240 + 8, fill="green"))

def tick():
  rem = 10
  for i in elements:
    canv.move(i, random.randrange(-4, 4), random.randrange(-4, 4))
    rem -= 1
    if rem <= 0: break
  root.after(40, tick)
tick()

root.mainloop()

PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Разработка GUI | Следующая тема »


 




[ Время генерации скрипта: 0.0582 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.