Jump to content
Nokioteca Forum

Novizio Python!


Lupoalberto12
 Share

Recommended Posts

Ciao a tutti!

Volendo iniziare a scrivere qualcosa anche per il mio cell, ho letto entrambi i Topic per iniziare con il Python e uno dei due manuali per Python (il secondo)1

Per ora è come il C++, però ci sono delle differenze (o somiglianze) (confermatemi se sono vere):

  1. invece delle parentesi graffe, "funziona" con il tab!
  2. Anche il Python è case sensitive!
  3. Per i "parametri" d'entrata e di uscita dai cicli o dalle istruzioni di controllo (If) non servono le parentesi tonde!
  4. Non serve dichiarare il tipo delle variabili!

Ora però trovo difficoltà con le differenze tra vari cellulari!

Mi spiego: volevo creare un programma che dopo tot secondi blocchi la tastiera (quindi tasto sinistro + *) per N70, visto che non ne ho trovati di programmi che fanno solo quello!

Ora che differenza c'è tra il mio 6600 e l'N70?

Cioè quando vado a scrivere, cosa cambia tra l'uno e l'altro?

All'inizio cerco di farlo funzionare "da terminale", poi con un minimo di grafica (solo per far inserire dopo quanti secondi si deve attivare e poi in Background)!

Grazie!

Ciao!

! :suicide_anim: !

Link to comment
Condividi su altri siti

Cioè quando vado a scrivere, cosa cambia tra l'uno e l'altro?

All'inizio cerco di farlo funzionare "da terminale", poi con un minimo di grafica (solo per far inserire dopo quanti secondi si deve attivare e poi in Background)!

se non usi funzioni specifiche introdotte da symbian in versioni successive del S.O., non ci sono differenze di funzionamento da un programma all'altro: è proprio questo il bello di python, la portabilità.

Per dire, se devi mostrare un messaggio sullo schermo, o richiedere un input dall'utente, o fare altre cose semplici, il tuo programma girerà su qualunque s60!

Se pero' invece inizi a importare moduli esterni, dovrai assicurarti che siano disponibili per i vari cellulari.

Link to comment
Condividi su altri siti

@JumpJack_: grazie della risposta!

Quindi ad esempio se non "gioco" con la fotocamera, browser ecc.ecc. non cambia nulla!

Quindi se uso solo la tastiera (o meglio i codici della tastiera) non ci dovrebbero essere problemi tra 6600 e N70?

Però mi chiedevo se potesse incidere la risoluzione dello schermo (oppure si "auto-adatta"?)!

Grazie!

Ciao!

! :thumbs: !

Edit:

un'altro paio di domande:

  1. non ho ben capito come si usa "canvas", però penso che si debba usare insieme ad "appuifw" (giusto?)!
  2. Perchè si mette la u davanti al testo da far stampare a video (esempio: appuifw.note(u"Ciao",'info')?
  3. e32 sarebbe la libreria di "Sistema" (quella per Uiq cambia, giusto?)?
  4. Perchè per MULTI_QUERYBOX non si deve definire il tipo di dato che l'utente deve inserire?
  5. Come faccio un minimo di grafica (con "appuifw.app.body=xxx" cancello, ma se voglio definire qualcos'altro (esempio: come dico che il colore del testo deve essere rosso?)?
  6. Per il KeyCapture sulla guida Pys60 rimanda al Capitolo 5.2 del manuale 1.3.11: su quello più recente dove si trova invece?
  7. Cos'è questa definizione: "from appuifw import *" ? (Puntatore?)!

Grazie!

Ciao!

! :thumbs: !

Modificato da Lupoalberto12
Link to comment
Condividi su altri siti

@JumpJack_: grazie della risposta!

Quindi ad esempio se non "gioco" con la fotocamera, browser ecc.ecc. non cambia nulla!

Quindi se uso solo la tastiera (o meglio i codici della tastiera) non ci dovrebbero essere problemi tra 6600 e N70?

Però mi chiedevo se potesse incidere la risoluzione dello schermo (oppure si "auto-adatta"?)!

Grazie!

Ciao!

! :lol: !

Edit:

un'altro paio di domande:

  1. non ho ben capito come si usa "canvas", però penso che si debba usare insieme ad "appuifw" (giusto?)!
  2. Perchè si mette la u davanti al testo da far stampare a video (esempio: appuifw.note(u"Ciao",'info')?
  3. e32 sarebbe la libreria di "Sistema" (quella per Uiq cambia, giusto?)?
  4. Perchè per MULTI_QUERYBOX non si deve definire il tipo di dato che l'utente deve inserire?
  5. Come faccio un minimo di grafica (con "appuifw.app.body=xxx" cancello, ma se voglio definire qualcos'altro (esempio: come dico che il colore del testo deve essere rosso?)?
  6. Per il KeyCapture sulla guida Pys60 rimanda al Capitolo 5.2 del manuale 1.3.11: su quello più recente dove si trova invece?
  7. Cos'è questa definizione: "from appuifw import *" ? (Puntatore?)!

Grazie!

Ciao!

! :) !

1 Si il canvas si usa con l'appuifw, ovviamente x scrivere fai ad esempio canvas.text() oppure canvas.blit() x disegnare su schermo un oggetto immagine. canvas è l'istanza appuifw.Canvas() ovviamente!

2.La u si mette x indicare unicode, codifica usata in symbian x l' UI (testi, etichette ecc...)

3.e32 non si può definire una libreria di sistema cmq è sempre utile nei programmi, quasi indispensabile. Non so nemmeno se python sia su UIQ cmq dovrebbe esserci pure li se fosse.

4 Probabilmente non è implementata una cosa del genere. Se richiedi numeri dovrai inserirlo come stringa e poi convertirlo a numero con int() o float() oppure eval() che te lo converte nel tipo giusto

5 Il colore del testo è un parametro che passi al metodo text, polygon ecc... e non dipende dal body

6 La libreria Keycapture non è mai stata aggiornata, quindi qualsiasi riferimento è sempre ok

7 from libreria import * si usa x importare direttamente i metodi rendendoli locali nello script (tipo e32.ao_sleep() se carichi il modulo cosi puoi fare cosi: ao_sleep() senza e32). Puoi importare solo una funzione anche from e32 import ao_sleep,reset_inactivity...

Spero che ti abbia chiarito!

Link to comment
Condividi su altri siti

  1. invece delle parentesi graffe, "funziona" con il tab!
  2. Anche il Python è case sensitive!
  3. Per i "parametri" d'entrata e di uscita dai cicli o dalle istruzioni di controllo (If) non servono le parentesi tonde!
  4. Non serve dichiarare il tipo delle variabili!

Siccome Memory come al solito è stato esaustivo nella sua risposta provo io a risponderti ale prime domande dove mi sembra tu non abbia ancora ricevuto risposta.

Percui:

1. Certo, il tab è una cosa essenziale nel python. Puoi scegliere quando debba essere la grandezza di un tab, 1-2-3-4 spazi. Io solitamente ne uso 4 per trovarne subito la posizione, però se devi fare perecchie identazioni è meglio usare un numero di spazi inferiore.

2. Of course, anche python è case sensitive! :thumbs:

3. No, non servono, anche se magari a volte ti possono essere utili per fare chiarezza (un po' come la questione dei tab);

4. No, le variabili non si dichiarano, ma si distinguono quando gli si assegna un valore, per esempio stringa="" (per una stringa si usano le virgolette), intero=1234 (per l'intero non si usano, quindi se fai una cosa del genere: intero="1234" nonostante tu legga dei numeri rimane in memoria come stringa)...

Modificato da giuppe92
Link to comment
Condividi su altri siti

@memoryn70:

1 quindi non sono due cose separate! Canvas è "una sotto-libreria" di Appuifw, quindi?

2 L' avevo immaginato :thumbs: !

3 Sisi è presente anche lì :) !

4 Capito!

5 E dove posso trovare qualcosa che mi spieghi cosa usare per lo sfondo, per il testo, ecc.ecc.? (ad esempio: appuifw.txt(codice colore) per il colore del testo?)

6 Quindi devo trovare il manuale 1.3.11?

7 Quindi o

import sysinfo
print battery()

o

print sysinfo.battery()

?

Se ad esempio voglio simulare la pressione del tasto "*", devo perndere il "codice" corrispondente al tasto "*" (come il codice Asci per i caratteri)?

Ho scritto questo codice usando tutte le funzionalità di "Sysinfo" (lo so l'hanno già fatto in molti, però almeno ho inizato a capire come funziona :mad: ):

import sysinfo
import appuifw

appuifw.app.body=None
appuifw.app.screen='full'
appuifw.app.title=u"Info Nokia"
appuifw.note(u"Benvenuto in Info Nokia!",'info')

nome=appuifw.query(u"Inserisci il tuo nome:", 'text')
print "Ciao ", nome

def info():
print "Livello Batteria:"
print sysinfo.battery()

print "Livello Segnale:"
print sysinfo.signal()

print "Codice Imei:"
print sysinfo.imei()

print "Ram disponibile:"
print sysinfo.max_ramdrive_size()

print "Ram Totale:"
print sysinfo.total_ram()

print "Rom Totale:"
print sysinfo.total_rom()

print "Tipo suoneria:"
print sysinfo.ring_type()

print "Versione So:"
print sysinfo.os_version()

print "Versione Sw:"
print sysinfo.sw_version()

def about():
appuifw.body=None
appuifw.note(u"Scritto da Ugo Palumbo!",'info')

def Exit():
appuifw.app.set_exit()

def Menu():
appuifw.app.menu=[(u"Mostra Informazioni",info),(u"About", about),(u"Esci",Exit)

Menu()

Ora altre due domande:

  1. def è come se fosse una function in C++? E se si, come faccio a dichiararle e poi a definirle?
  2. Perchè mi dà questo errore:
    Linea 50
     Menu()
     ^
    SyntaxError: invalid syntax


L'ho scritto prendendo ad esempio un altro programma!

Grazie dell'aiuto!

Ciao!

! :) !

Edit: @giuppe92: grazie anche a te!

Ciao!

! :) !

Modificato da Lupoalberto12
Link to comment
Condividi su altri siti

E' come se fosse un "system ("pause")" su C++ ("per Windows")?

Spiegatemi una cosa:

con lock=e32.Ao_lock() e lock.wait(), è come se scrivessi e32.Ao_lock.wait() ?

Perchè devo dichiarare lock prima di Menu()? Non posso metterlo subito prima di lock.wait()?

Ci sono altri controlli di "attesa"?

Grazie!

Ciao!

! :lol: !

Link to comment
Condividi su altri siti

E' come se fosse un "system ("pause")" su C++ ("per Windows")?

Spiegatemi una cosa:

con lock=e32.Ao_lock() e lock.wait(), è come se scrivessi e32.Ao_lock.wait() ?

Perchè devo dichiarare lock prima di Menu()? Non posso metterlo subito prima di lock.wait()?

Ci sono altri controlli di "attesa"?

Grazie!

Ciao!

! :lmaosmiley: !

Ti rispondo solo ad alcune xkè sn 1 pò di fretta! :)

Si sarebbe cosi ma in questo caso poi devi avere cmq l'istanza della classe e32.ao_lock(), altrimenti poi non riesci + a sbloccarlo anche se fai e32.Ao_lock.signal() perché non è la stessa istanza poi che vai ad usare! (a capirlo cosi da principianti forse non è facile cmq)..

Altri controlli di tempo e pause sono e32.ao_sleep() e la classe e32.Ao_timer() che si usa cosi:

t=e32.Ao_timer()

t.after(secondi (anche float), callback) dove callback è la funzione che andrai a richiamare, se ha bisogno di argomenti usa: lambda: funz(args)

Modificato da memoryn70
Link to comment
Condividi su altri siti

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share

×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy