Archived:Como alterar o tamanho da tela em PySymbian
Dados do artigo
Artigo
Tradução:
Originado de How to change screen size in PySymbian
Por maiconherverton
Última alteração feita por hamishwillee
em 19 Dec 2011
Contents |
Resumo
Este artigo mostra como alterar em tempo de execução o ecrã de uma aplicação PyS60 (Python). O código de exemplo suporta qualquer tamanho de tela e rotação padrões da S60.
Pré-condições
Uma aplicação por padrão utiliza um ecrã normal como exibição. A área atualmente utilizada pode ser recuperada e definida usando a tela tela (screen) atribuindo uma instância a aplicação.
Os possíveis modos de tela são:
- 'normal' - título, painel e softkeys área são visíveis (padrão)
- 'Grandes' - Apenas as softkeys são visíveis
- 'Cheia' - a aplicação do corpo ocupa todo o ecrã; sobre S60 5a edição, tem o mesmo efeito que a 'grande', ou seja, o espaço é ainda visível de softkeys
- 'full_max' - introduzido em PySymbian 1.9.4; em S60 3rd Edição tem o mesmo efeito de "Cheia" e sobre S60 5a edição, o pedido do corpo ocupa a tela inteira, incluindo a área de softkeys
Código fonte
import e32, appuifw, graphics
#Variáveis globais para controle da aplicação
app_lock = e32.Ao_lock()
my_timer = e32.Ao_timer()
#Variávies globais para aplicação UI
canvas = None
img = None
def cb_quit():
'''Callback for exit, do clean-up'''
my_timer.cancel()
app_lock.signal()
def cb_handle_redraw(dummy = (0, 0, 0, 0)):
'''Overwrite default screen redraw event handler'''
#Isto pode ser chamado automaticamente antes que a img é criada
if img:
canvas.blit(img)
def cb_handle_resize(dummy=(0, 0, 0, 0)):
'''Overwrite default screen resize event handler'''
global img
#Isto pode ser chamado automaticamente antes de criar o canvas
if canvas:
#Criar uma imagem colorida de tela cheia
img = graphics.Image.new(canvas.size)
img.clear(0x33CC00)
#Inicialização da aplicação UI
appuifw.app.screen = 'full'
canvas = appuifw.Canvas(resize_callback = cb_handle_resize,
redraw_callback = cb_handle_redraw)
appuifw.app.body = canvas
appuifw.app.exit_key_handler = cb_quit
#Inicializa a aplicação
cb_handle_resize()
#Visualizar os 3 layouts possíveis com uma pausa entre elas de 3 segundos
try:
# full_max only in PySymbian 1.9.4, removed after that
appuifw.app.screen = 'full_max'
cb_handle_redraw()
my_timer.after(3)
except:
appuifw.app.screen = 'full'
cb_handle_redraw()
my_timer.after(3)
appuifw.app.screen = 'large'
cb_handle_redraw()
my_timer.after(3)
appuifw.app.screen = 'normal'
cb_handle_redraw()
#Espera que o usuário escolha a saida
app_lock.wait()
Pré-condição
3 Exemplos possíveis são:

