×
Namespaces

Variants
Actions

Archived:Construindo um Calendário em PySymbian Utilizando Canvas

From Nokia Developer Wiki
Jump to: navigation, search

Archived.pngAquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito)


Article Metadata

Testado com
Aparelho(s): N73,N95

Compatibilidade
Plataforma(s): S60 3rd Edition, S60 5th Edition

Artigo
Palavras-chave: Calendar
Tradução:
Por thiagobrunoms
Última alteração feita por hamishwillee em 07 May 2013

Contents

Introdução

Este artigo mostra como desenhar um calendário em Python utilizando Canvas. O código abaixo foi escrito com a ferramenta mais simples de para dispositivos móveis, PySymbian.

A aplicação utiliza os seguintes módulos:

  • appuifw
  • graphics
  • e32

A seguinte função é utilizada para criar o calendário baseado em canvas:

  • draw_screen():desenha a tela preta
  • draw_text():escreve textos
  • print_number: escreve os números

Os seguintes parâmetros foram utilizados no desenvolvimento deste exemplo. Eles são customizáveis.

  • number_of_square: Inicializa o número da coluna
  • number_of_lines: Inicializa o número da linha
  • Horizontal_Separator: Separa os espaços entre as colunas
  • Vertical_Separator: Sepera os espaços entre as linhas

Todas as funções e parâmetros são definidos com mais detalhes no código-fonte abaixo.

Código-fonte

O código do calendário está descrito abaixo

# import module
import appuifw,graphics,e32
 
# define color code
BLACK= (0,0,0)
RED=(255,0,0)
BLUE= (0,0,255)
GREEN=(0,255,0)
ORANGE= (255,127,0)
WHITE=(255,255,255)
global width,height
width=320
height=320
 
#Global variables
sqrt_x=width/16
sqrt_y=height/4
sqrt_width=30
sqrt_height=25
number_of_square=7
number_of_lines=6
Horizontal_Separator=3
Vertical_Separator=3
 
TextColor=RED
PrintNumber=WHITE
canvas=None
img=None
 
def handle_redraw(rect):
canvas.blit(img)
 
# exit function
def quit():
app_lock.signal()
 
#---------------------------
#desenha tela
#---------------------------
 
def draw_screen():
 
#Variáveis global para a interface
global canvas
 
#Cria uma instância de Canvas e seta-o como corpo da aplicação.
canvas = appuifw.Canvas(redraw_callback = handle_redraw,event_callback = None)
appuifw.app.body=canvas
 
#Seta a tela cheia
appuifw.app.screen = 'full'
appuifw.app.exit_key_handler=quit
 
#Variáveis global para a interface
global img
img = graphics.Image.new((canvas.size))
 
#Limpa a tela
img.clear(BLACK)
global x1,y1,x2,y2, sqrt_x, sqrt_y, sqrt_width, sqrt_height,number_of_square, Horizontal_Separator,Vertical_Separator,number_of_lines
j=0
while j<number_of_lines:
i=0
k=0
 
#define as coordenadas do retangulo
x1=sqrt_x
y1=sqrt_y+(j*(sqrt_height+Vertical_Separator))
x2=x1+sqrt_width
y2=y1+sqrt_height
while (i<number_of_square):
#draw rectangle
img.rectangle((x1+ (i*sqrt_width),y1,x2+ (i*sqrt_width)-Horizontal_Separator,y2),outline=BLUE)
i=i+1
handle_redraw(None)
j=j+1
Total_x, Total_y = canvas.size
img.text((35,50), u"Calendário", fill = BLUE,font=(u'Nokia Hindi S60',40,appuifw.STYLE_BOLD))
handle_redraw(None)
 
#define a função draw_text
def draw_text():
global sqrt_x,sqrt_y,t1,t2,sqrt_height,y3,x3, number_of_square
t1=5
t2=20
y3=sqrt_y+t2
i=1
a=[u'D',u'S',u'T',u'Q',u'Q',u'S',u'S']
while i< number_of_square +1:
# draw text on canvas
img.text(((sqrt_x+(i*t1)+((i-1)*sqrt_height)),y3), unicode(a[i-1]), fill=TextColor,font=(u'Nokia Hindi S60',20,appuifw.STYLE_BOLD))
i=i+1
handle_redraw(None)
 
 
def draw_number(i, no_of_days_in_month):
global number_of_lines, number_of_square
j=0
a=1
while j<(number_of_lines-1):
if i==number_of_square:
i=0
t1=5
x1=sqrt_x
y1=sqrt_y+((j+1)*sqrt_width)+14
while (i<number_of_square):
img.text((x1+ (i*sqrt_height)+((i+1)*t1),y1),unicode(a),fill=PrintNumber)
a=a+1
i=i+1
if a==no_of_days_in_month+1:
break
handle_redraw(None)
#a=a+1
j=j+1
#invocando as funções
draw_screen()
draw_text()
draw_number(3,31)
app_lock=e32.Ao_lock()
 
#Esperando o usuário sair da aplicação
app_lock.wait()

Screenshots

Draw square.JPG Draw text.JPG


Print number.JPG Print number2.JPG

Links relacionados

This page was last modified on 7 May 2013, at 14:18.
223 page views in the last 30 days.