Доброго времени суток! Для плавности прокрутки в классе программы использовал begin_redraw() end_redraw(). При выходе из класса - программа “вылетает” вообще (как в классе отдельно, так и при работе в связке с другими классами). До использования begin_redraw() end_redraw() все работало нормально. Подскажите, что я делаю не так? А отказываться от begin_redraw() не хочется…
#-*-coding:utf-8-*-
import appuifw,e32,graphics,key_codes,pickle,globalui
#--
zamok=e32.Ao_lock()
#--
my_data_path=('c:\\Data\\strelki\\')
my_path=('c:\\Data\\python\\graph\\')
#-------------------------------------------------------------------------------
class Static:
def __init__(self):
self.schetcic=0
self.previos_pos=320
self.znak=''
self.nom_str=1
self.flag=False
#--
appuifw.app.screen='full'
appuifw.app.orientation='landscape'
appuifw.app.directional_pad=False
#--
self.img_statist_form=graphics.Image.open(my_path+'statist_form.jpg')
self.img_exit_button_down=graphics.Image.open(my_path+'exit_button_down.jpg')
#--
self.form=appuifw.Canvas(redraw_callback=self.redraw,
event_callback=self.drag_event)
appuifw.app.body=self.form
#-----------------------------------------------------------------------
#--кнопка выхода в меню
self.form.bind(key_codes.EButton1Up,self.exit_button_down,((560,0),(640,60)))
self.form.bind(key_codes.EButton1Down,self.exit_button_up,((560,0),(640,60)))
#--
self.read_file()
self.draw()
self.sort_data()
#---------------------------------------------------------------------------
def draw(self):
self.form.blit(self.img_statist_form)
#-------------
if self.flag==True:
self.sort_data()
#---------------------------------------------------------------------------
def redraw(self,event):
self.draw()
#---------------------------------------------------------------------------
def drag_event(self,event):
if event['type']==key_codes.EButton1Up:
self.schetcic=0
#-------------
if event['type']==key_codes.EDrag:
current_pos=event['pos'][0]
#-------------
if current_pos>self.previos_pos:
self.schetcic+=1
self.previos_pos=current_pos
#-------------
if self.schetcic==50:
self.znak='+'
self.sort_data()
self.schetcic=0
#-------------
if current_pos<self.previos_pos:
self.schetcic-=1
self.previos_pos=current_pos
#-------------
if self.schetcic==-50:
self.znak='-'
self.sort_data()
self.schetcic=0
#---------------------------------------------------------------------------
def read_file(self):
self.data_list=[]
file1=open(my_data_path+'strelka.txt','r')
self.data_list=pickle.Unpickler(file1)
self.data_list=self.data_list.load()
file1.close()
#---------------------------------------------------------------------------
def sort_data(self):
self.temp_data_list=[]
self.temp_typle=()
#-------------
if self.znak=='+':
self.nom_str+=1
#-------------
if self.nom_str>4:
self.nom_str=1
#-------------
if self.znak=='-':
self.nom_str-=1
#-------------
if self.nom_str<1:
self.nom_str=4
#-------------
for t in self.data_list:
#-------------
if t[3]==str(self.nom_str).decode('utf-8'):
self.temp_typle=(t[4],t[5])
self.temp_data_list.append(self.temp_typle)
self.flag=True
self.print_data()
#---------------------------------------------------------------------------
def print_data(self):
point_width=6
len_data=0
len_data=len(self.temp_data_list)-1
kol_point=(600/len_data)
x=30
#----------------------------------------------------------------------
#+++++++++++++BEGIN_REDRAW и END_REDRAW ИСПОЛЬЗУЮТСЯ ЗДЕСЬ +++++++++++++
#----------------------------------------------------------------------
self.form.begin_redraw() #-#############################
self.form.blit(self.img_statist_form) #-#############################
self.form.end_redraw() #-#############################
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------
self.form.text((510,35),text=str(self.nom_str).decode('utf-8'),
fill=(255,255,255),
font=(u'Series60Sans',25,1))
#-------------
for m in self.temp_data_list:
y1=450-((int(m[0]))*10)
y2=450-((int(m[1]))*10)
#-------------
if y1==y2:
point_width=10
else:
point_width=6
self.form.point((x,y2),outline=(0,0,255),width=point_width)
self.form.point((x,y1),outline=(255,0,0),width=6)
x+=kol_point
#-------------
x1=30
x2=0
n=0
#-------------
for m in range(len(self.temp_data_list)):
#-------------
if n>(len(self.temp_data_list))-2:
return
x2=x1+kol_point
n=m+1
y1=450-(int(self.temp_data_list[m][0])*10)
yy1=450-(int(self.temp_data_list[n][0])*10)
y2=450-(int(self.temp_data_list[m][1])*10)
yy2=450-(int(self.temp_data_list[n][1])*10)
self.form.line((x1,y2,x2,yy2),outline=(0,0,255),width=2)
self.form.line((x1,y1,x2,yy1),outline=(255,0,0),width=2)
x1+=kol_point
#---------------------------------------------------------------------------
def exit_button_down(self,event):
self.form.blit(self.img_exit_button_down,target=(570,0))
def exit_button_up(self,event):
self.form.blit(self.img_statist_form)
zamok.signal()
#-------------------------------------------------------------------------------
stat1=Static()
zamok.wait()