Форум сайта python.su
Почему то не работает redraw_callback
from miso import *
from globalui import global_msg_query
from topwindow import TopWindow
from sysinfo import *
from sys import *
from graphics import *
from DriveInfo import total_drivespace,drive_names
import time
FONT_ANTIALIAS
import appuifw as ui
import envy
from os import abort
envy.set_app_system(1)
lock=e32.Ao_lock()
path.append('e:\\system\\apps\\SmartRAM')
ui.app.title=u"SmartRAM"
def bars():
bg=Image.open('e:\\1\\bg.png')
b.blit(bg)
def ur(x):
return x.encode('utf-8')
def ru(x):
return x.decode('utf-8')
ui.app.body=b=ui.Canvas(redraw_callback=bars)
bars()
lock.wait()
Офлайн
Потому что согласно документации, функции, которая указывается в redraw_callback передается один аргумент - тьюпл с координатами области, которые должны быть перерисованы, ваша функция не принимает ни одного аргумента.
P.S. хм, каждый раз делать открытие изображения не правильно с точки зрения производительности
Офлайн
Поясню: возбуждается исключение TypeError: bars() takes exactly 1 argument (0 given), но вы его не видите т. к. на экране Canvas. Если бы вы запаковали данный скрипт в sis, то в этот момент прога бы вылетала из-за непойманого исключения.
Отредактировано (Фев. 1, 2011 22:07:12)
Офлайн
R.Ll.S.h57, ну тогда можно еще больше пояснить :)
...
def bars(rect): # хотя я обычно пишу rect=None если еще и сам эту функцию юзаю
...
Офлайн