Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Archived:Construindo um Calendário em PySymbian Utilizando Canvas

From 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 11:18.
519 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×