Re: [Python] Utilizzo di Readline con socket

2008-02-01 Per discussione De Santis Luca
> From: [EMAIL PROTECTED]> > I thread sono brutti, cattivi, cacca, hitler usava 
> i thread... sono d'accordo > su tutto. Ma ci sono momenti in cui fanno 
> maledettamente comodo (questo lo è, > a meno che non ti spieghino come 
> installare twisted sul cellulare) e ci sono > modi di usarli in cui 
> funzionano senza dare rogne (una coda lo è). Secondo me > rimuoverli dalla 
> coscienza collettiva della programmazione è negativo quanto > il loro stesso 
> abuso.> 
Scusate fa faccio tante domande, forse pure stupide, non é tanto che sono 
entrato nel modo di python :)
 
Ma non capisco bene come vanno gestiti i thread. Ho letto che praticamente 
posso crearli semplicemente con la funzione
 
thread.start_new_thread(Funzione(Argomenti), ())
 
Però chi gestisce il cambio di contesto dei thread ? Devo farelo io o lo fa 
direttamente python ?
 
Io ho ad esempio chiamo questi deu thread:
 
thread.start_new_thread(Listen(PhoneConnection), ())
thread.start_new_thread(receive_msg(fd), ())
 
Le funzioni richiamate sono quele sott:
 
(1)
def Listen(PhoneConnection):LastClock=clock()try: if 
PhoneConnection: LogScreen("- Init listen port sevice")
while True:GetClock=clock()if 
GetClock-LastClock>2:TmpInfo=GetPhoneInfo() 
   if TmpInfo==1:
ToSend="StatChn:"+str(LastSignal)+";"+str(LastBattery)+";"+str(LastOperator)
talk(PhoneConnection,ToSend)except:
PhoneConnection.close()LogScreen("- Connection Lost in Listen")
InitConnection()
(2)
def receive_msg(fd):reply = fd.readline()ParseIncomingData(reply)
 
 
Locicamente viene sempre eseguito solo il primo thread in quanto il ciclo while 
fa si che la funzione sta in un loop infinito finché non disconnetto il 
telefono. Stessa cosa accade se lancio prima la funzione receive_msg(fd) in 
quanto fd.readline() tiene bloccato il thread finché non trova qualche dato in 
arrivo. 
 
Quindi come faccio a fare un cambio di contestop tra il primo ed il secondo 
thread ?
_
Scarica GRATIS le tue emoticon preferite!
http://intrattenimento.it.msn.com/emoticon/___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] lista da passare alla combobox

2008-02-01 Per discussione Crash Override
Bene,
dopo aver capito come visualizzare l'errore, veniamo all'errore.
Dunque la combox accetta una lista di Stringhe giusto?
Allora io posso prendere un tupla da un db MySQL in questo modo:
...

result = cur.fetchall()

ora questa è una tupla allora faccio lista = list(result)
e dopo la passo al costruttore della combobox. Sicuramente sbaglio 
perchè mi dà quest'errore:

File "E:\BuscaLaPelicula\coding\dbConnect\src\base3.py", line 222, in 

frame=Main_Frame()
  File "E:\BuscaLaPelicula\coding\dbConnect\src\base3.py", line 47, in 
__init__
panel = Custom_Panel(self, listaOpzioni, listaCitta)
  File "E:\BuscaLaPelicula\coding\dbConnect\src\base3.py", line 186, in 
__init__
wx.CB_DROPDOWN
  File 
"C:\Python25\Lib\site-packages\wx-2.8-msw-unicode\wx\_controls.py", line 
590, in __init__
_controls_.ComboBox_swiginit(self,_controls_.new_ComboBox(*args, 
**kwargs))
TypeError: String or Unicode type required

La domanda è come faccio a passare ad una combobox i risultati 
provenienti da una query?

Grazie
P


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Messaggi di errore con wxPython

2008-02-01 Per discussione Y3s

Il giorno 01/feb/08, alle ore 10:58, Crash Override ha scritto:

> Salve,
> vorrei porvi una domanda che forse può sembrare stupida, ma è da poco
> che sviluppo in Python.
> E' possibile 'riuscire' a leggere i messaggi di errore della wx prima
> che 'scompaiano'. Perchè ho un errore in un'applicazione scritta in
> wxPython, ma compare una finestra con gli errori sullo stderr e poi
> scompare!
> Vorrei leggere questi errori...


Quando crei l'oggetto wx.App (o wx.PySimpleApp) passa un parametro  
"0" al costruttore, così:

app = wx.PySimpleApp(0)

In questo modo non viene creata quella finestra, ma tutti gli errori  
vengono riportati sullo stderr "normale", ossia sulla shell se lo  
chiami da shell, in IDLE se lo chiami da lì, ecc. Naturalmente puoi  
anche redirigere lo stderr su un file se ti viene comodo (o se lanci  
doppiocliccando l'icona)

--
Antonio Valente


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Utilizzo di Readline con socket

2008-02-01 Per discussione Manlio Perillo
De Santis Luca ha scritto:
> [...]
> Scusate fa faccio tante domande, forse pure stupide, non é tanto che 
> sono entrato nel modo di python :)
>  

Nessun problema, e comunque non sono domande banali! Stai usando una 
piattaforma abbastanza particolare.

> Ma non capisco bene come vanno gestiti i thread. Ho letto che 
> praticamente posso crearli semplicemente con la funzione
>  
> thread.start_new_thread(Funzione(Argomenti), ())
>  
> Però chi gestisce il cambio di contesto dei thread ? Devo farelo io o lo 
> fa direttamente python ?
>  

Dovrebbe farlo il sistema operativo.
Dovresti leggere nella documentazione se i threads sono implementati 
secondo il modello preemptive o cooperative:
http://en.wikipedia.org/wiki/Preemption_%28computing%29

> Io ho ad esempio chiamo questi deu thread:
>  
> thread.start_new_thread(Listen(PhoneConnection), ())
> thread.start_new_thread(receive_msg(fd), ())
>  

Ah, ma qui sbagli tu :).
In questo modo *prima* esegui la funzione e *poi* passi il valore che 
restituisce a start_new_thread.

Devi fare:
thread.start_new_thread(Listen, PhoneConnection)
thread.start_new_thread(receive_msg, fd)

in modo che le due funzioni vengano eseguite in thread separati.

 > [...]




Manlio Perillo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Messaggi di errore con wxPython

2008-02-01 Per discussione Crash Override
Salve,
vorrei porvi una domanda che forse può sembrare stupida, ma è da poco 
che sviluppo in Python.
E' possibile 'riuscire' a leggere i messaggi di errore della wx prima 
che 'scompaiano'. Perchè ho un errore in un'applicazione scritta in 
wxPython, ma compare una finestra con gli errori sullo stderr e poi 
scompare!
Vorrei leggere questi errori...

Grazie

P
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] lista da passare alla combobox

2008-02-01 Per discussione Y3s

Il giorno 01/feb/08, alle ore 11:51, Crash Override ha scritto:
>
> type(lista)
>
> list
> ___
>
> Output:
>  [('Milano',), ('Torrecuso',), ('Benevento',), ('Melfi',), ('Roma',)]

E' una lista di tuple, devi trasformarla in una lista di stringhe.  
Una list comprehension è l'ideale in questi casi:

nuova_lista = [x[0] for x in lista]

Ciao

--
Antonio Valente


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] lista da passare alla combobox

2008-02-01 Per discussione Crash Override
Y3s ha scritto:
> Come crei la combobox? Mi sa che passi la lista al parametro di posto  
> errato...in ogni caso un print lista ti toglie il dubbio che non sia  
> una lista (ma l'errore è sicuramente che hai sbagliato posizione, w i  
> parametri con nome!)
>
>
> --
> Antonio Valente
>
>
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>   
Purtroppo il parametro è nel posto giusto... perchè se ci metto un'altra 
lista creata 'a mano' funziona.
questo è il main di test per la funzione onQuery del modulo dbOp.py:

if __name__=='__main__':
tupla = onQuery('SELECT nome_citta FROM citta')
lista = list(tupla)
print "%s" % lista

type(lista)

list
___

Output:
 [('Milano',), ('Torrecuso',), ('Benevento',), ('Melfi',), ('Roma',)]

Quindi? Come lo risolvo il probelma?
Ringrazio Y3s perchè so che mi risponderà lui ;)
GRAZIE

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] lista da passare alla combobox

2008-02-01 Per discussione Y3s

Il giorno 01/feb/08, alle ore 11:25, Crash Override ha scritto:

> Bene,
> dopo aver capito come visualizzare l'errore, veniamo all'errore.
> Dunque la combox accetta una lista di Stringhe giusto?
> Allora io posso prendere un tupla da un db MySQL in questo modo:
> ...
>
> result = cur.fetchall()
>
> ora questa è una tupla allora faccio lista = list(result)
> e dopo la passo al costruttore della combobox. Sicuramente sbaglio
> perchè mi dà quest'errore:



> TypeError: String or Unicode type required
>


Come crei la combobox? Mi sa che passi la lista al parametro di posto  
errato...in ogni caso un print lista ti toglie il dubbio che non sia  
una lista (ma l'errore è sicuramente che hai sbagliato posizione, w i  
parametri con nome!)


--
Antonio Valente


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] lista da passare alla combobox

2008-02-01 Per discussione Crash Override

Y3s ha scritto:

Il giorno 01/feb/08, alle ore 11:51, Crash Override ha scritto:
  

type(lista)

list
___

Output:
 [('Milano',), ('Torrecuso',), ('Benevento',), ('Melfi',), ('Roma',)]



E' una lista di tuple, devi trasformarla in una lista di stringhe.  
Una list comprehension è l'ideale in questi casi:


nuova_lista = [x[0] for x in lista]

Ciao

--
Antonio Valente


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

  

Grandissimo! Non avevo capito quasi nulla!
Mi hai risolto tutti i problemi che avevo in una sola riga...
Grazie infinite
P
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Domanda "teorica"

2008-02-01 Per discussione Pietro Battiston
Salve a tutti.

Ho una domanda un po' teorica, ma che in realtà viene da un problema
concreto che ho usando il modulo dateutil.

Se io ho una funzione con dei parametri facoltativi di cui conosco il
valore di default, sono certissimo che non passare alcun valore
equivalga a passare il valore di default?
Questo, è per una funzione in python (e per quel che ne so io), ovvio.
Ma una funzione di libreria scritta in C ha modo di "sapere" se un dato
parametro è stato passato oppure no?

In pratica, per la funzione dateutil.relativedelta.relativedelta, la cui
documentazione dice:

dateutil.relativedelta.relativedelta(self, dt1=None, dt2=None, years=0,
months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0, seconds=0,
microseconds=0, year=None, month=None, day=None, weekday=None,
yearday=None, nlyearday=None, hour=None, minute=None, second=None,
microsecond=None)

, ho la certezza più assoluta che le seguenti due invocazioni siano a
tutti gli effetti identiche?

dateutil.relativedelta.relativedelta(years=1)
dateutil.relativedelta.relativedelta(None, None, 1)

Per rispondere a tale domanda ho letto anche un po' della documentazione
su come estendere Python con il C, ma non posso dire di averne ricavata
una certezza proprio assoluta...


In alternativa, è possibile specificare in modo dinamico l'associazione
"nome del parametro-valore passato"? Ad esempio, se ho un valore "val"
da passare come parametro, esiste un modo di rendere il seguente
(stupido) codice senza scrivere due volte l'invocazione della funzione
relativedelta?

if val > 12:
risultato=relativedelta(years=val)
else:
risultato=relativedelta(months=val)

(ovviamente faccio entrambe le domande perché nel mio caso ho un po' di
"if" annidati e sono costretto a scrivere ben più di due volte tale
invocazione...)

grazie

Pietro
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Domanda "teorica"

2008-02-01 Per discussione Daniele Varrazzo
Pietro Battiston ha scritto:
> Salve a tutti.
> 
> Ho una domanda un po' teorica, ma che in realtà viene da un problema
> concreto che ho usando il modulo dateutil.
> 
> Se io ho una funzione con dei parametri facoltativi di cui conosco il
> valore di default, sono certissimo che non passare alcun valore
> equivalga a passare il valore di default?
> Questo, è per una funzione in python (e per quel che ne so io), ovvio.
> Ma una funzione di libreria scritta in C ha modo di "sapere" se un dato
> parametro è stato passato oppure no?
> 
> In pratica, per la funzione dateutil.relativedelta.relativedelta, la cui
> documentazione dice:
> 
> dateutil.relativedelta.relativedelta(self, dt1=None, dt2=None, years=0,
> months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0, seconds=0,
> microseconds=0, year=None, month=None, day=None, weekday=None,
> yearday=None, nlyearday=None, hour=None, minute=None, second=None,
> microsecond=None)
> 
> , ho la certezza più assoluta che le seguenti due invocazioni siano a
> tutti gli effetti identiche?
> 
> dateutil.relativedelta.relativedelta(years=1)
> dateutil.relativedelta.relativedelta(None, None, 1)
> 
> Per rispondere a tale domanda ho letto anche un po' della documentazione
> su come estendere Python con il C, ma non posso dire di averne ricavata
> una certezza proprio assoluta...
> 
> 
> In alternativa, è possibile specificare in modo dinamico l'associazione
> "nome del parametro-valore passato"? Ad esempio, se ho un valore "val"
> da passare come parametro, esiste un modo di rendere il seguente
> (stupido) codice senza scrivere due volte l'invocazione della funzione
> relativedelta?
> 
> if val > 12:
> risultato=relativedelta(years=val)
> else:
> risultato=relativedelta(months=val)
> 
> (ovviamente faccio entrambe le domande perché nel mio caso ho un po' di
> "if" annidati e sono costretto a scrivere ben più di due volte tale
> invocazione...)

Ciao,

rispondo prima all'ultima domanda: secondo me ti può aiutare a non porti la 
prima domanda.

In Python puoi fare:

 params = {}

 if val > 12:
 params['years'] = val
 else:
 params['months'] = val

 risultato = relativedelta(**params)

quindi accumulare nella maniera più fantasiosa che preferisci named parameters 
  in un dizionario e poi espanderlo come parametri di una chiamata.

Riguardo la prima domanda, penso che

  dateutil.relativedelta.relativedelta(None, None, 1)

sia abbastanza garantito come funzionamento, ma trovandoti davanti un 
costruttore così complesso (21 parametri!) faresti meglio ad usare i named 
parameters:

 If you have a procedure with ten parameters, you probably missed some.
 -- Alan Perlis

...quindi stai sicuro che la prossima versione della libreria avrà 22 
parametri :) Affidarsi ai nomi anziché alle posizioni mi sembra più robusto.

Passando alla prima domanda, hai una *certezza molto ragionevole* che passare 
il default equivalga a non passare niente, ma c'è sempre l'incertezza di 
documentazione non ben aggiornata (anche perché con le estensioni C non si può 
fare introspezione con le signature). Mi sembra un'ipotesi remota comunque. 
Resta il fatto che gestirei questa chiamata usando solo named parameters.

Spero di esserti stato utile, ciao!


-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Domanda "teorica"

2008-02-01 Per discussione Pietro Battiston
Daniele Varrazzo ha scritto:
> Ciao,
>
> rispondo prima all'ultima domanda: secondo me ti può aiutare a non porti la 
> prima domanda.
>
> In Python puoi fare:
>
>  params = {}
>
>  if val > 12:
>  params['years'] = val
>  else:
>  params['months'] = val
>
>  risultato = relativedelta(**params)
>   

wow

è semplicemente più di quanto osavo immaginare.

Grazie mille, conoscevo il * ma non il **.

Pietro
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] listCtrl populating

2008-02-01 Per discussione Crash Override
Buonasera tutti.
Dunque ho una listCtrl che devo popolare e scrivo questo:


listaN.InsertColumn(0, 'titolo')
listaN.InsertColumn(1, 'nazione')
listaN.InsertColumn(2, 'anno')
listaN.InsertColumn(3, 'nome CdP')
listaN.InsertColumn(4, 'genere')
listaN.InsertColumn(5, 'trama')
listaN.InsertColumn(6, 'durata')
listaN.InsertColumn(7, 'locandina')
listaN.InsertColumn(8, 'fotobook')
listaN.InsertColumn(9, 'trailer breve')
listaN.InsertColumn(10, 'trailer lungo')
   
index = listaN.InsertStringItem(sys.maxint, '')
listaN.SetStringItem(index, 1, 'es2')
listaN.SetStringItem(index, 1, 'es3')


dove listaN è la listCtrl. Come aggiungo altre righe? Ho cercato nella 
documentazione wx ma non sono riuscito a risolvere il mio problema.

Grazie
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] listCtrl populating

2008-02-01 Per discussione Y3s

Il giorno 01/feb/08, alle ore 23:40, Crash Override ha scritto:

> Buonasera tutti.
> Dunque ho una listCtrl che devo popolare e scrivo questo:
>
>
> listaN.InsertColumn(0, 'titolo')
> listaN.InsertColumn(1, 'nazione')
> listaN.InsertColumn(2, 'anno')
> listaN.InsertColumn(3, 'nome CdP')
> listaN.InsertColumn(4, 'genere')
> listaN.InsertColumn(5, 'trama')
> listaN.InsertColumn(6, 'durata')
> listaN.InsertColumn(7, 'locandina')
> listaN.InsertColumn(8, 'fotobook')
> listaN.InsertColumn(9, 'trailer breve')
> listaN.InsertColumn(10, 'trailer lungo')
>
> index = listaN.InsertStringItem(sys.maxint, '')
> listaN.SetStringItem(index, 1, 'es2')
> listaN.SetStringItem(index, 1, 'es3')
>
>
> dove listaN è la listCtrl. Come aggiungo altre righe? Ho cercato nella
> documentazione wx ma non sono riuscito a risolvere il mio problema.



In [2]: wx.ListCtrl.InsertStringItem?
Type:   instancemethod
Base Class: 
String Form:
Namespace:  Interactive
File:   //Library/Frameworks/Python.framework/Versions/2.5/ 
lib/python2.5/site-packages/wx-2.8-mac-unicode/wx/_controls.py
Definition: wx.ListCtrl.InsertStringItem(*args, **kwargs)
Docstring:
 InsertStringItem(self, long index, String label, int  
imageIndex=-1) -> long

Esempio:

lista.InsertStringItem(0, "")
lista.SetStringItem(0, 0, "Riga1Colonna1")
lista.SetStringItem(0, 1, "Riga1Colonna2")
lista.SetStringItem(0, 2, "Riga1Colonna3")
lista.InsertStringItem(1, "")
lista.SetStringItem(1, 0, "Riga2Colonna1")
lista.SetStringItem(1, 1, "Riga2Colonna2")
lista.SetStringItem(1, 2, "Riga2Colonna3")

Ciao

--
Antonio Valente


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] listCtrl populating

2008-02-01 Per discussione Crash Override

Y3s ha scritto:

Il giorno 01/feb/08, alle ore 23:40, Crash Override ha scritto:

  

Buonasera tutti.
Dunque ho una listCtrl che devo popolare e scrivo questo:


listaN.InsertColumn(0, 'titolo')
listaN.InsertColumn(1, 'nazione')
listaN.InsertColumn(2, 'anno')
listaN.InsertColumn(3, 'nome CdP')
listaN.InsertColumn(4, 'genere')
listaN.InsertColumn(5, 'trama')
listaN.InsertColumn(6, 'durata')
listaN.InsertColumn(7, 'locandina')
listaN.InsertColumn(8, 'fotobook')
listaN.InsertColumn(9, 'trailer breve')
listaN.InsertColumn(10, 'trailer lungo')

index = listaN.InsertStringItem(sys.maxint, '')
listaN.SetStringItem(index, 1, 'es2')
listaN.SetStringItem(index, 1, 'es3')


dove listaN è la listCtrl. Come aggiungo altre righe? Ho cercato nella
documentazione wx ma non sono riuscito a risolvere il mio problema.





In [2]: wx.ListCtrl.InsertStringItem?
Type:   instancemethod
Base Class: 
String Form:
Namespace:  Interactive
File:   //Library/Frameworks/Python.framework/Versions/2.5/ 
lib/python2.5/site-packages/wx-2.8-mac-unicode/wx/_controls.py

Definition: wx.ListCtrl.InsertStringItem(*args, **kwargs)
Docstring:
 InsertStringItem(self, long index, String label, int  
imageIndex=-1) -> long


Esempio:

lista.InsertStringItem(0, "")
lista.SetStringItem(0, 0, "Riga1Colonna1")
lista.SetStringItem(0, 1, "Riga1Colonna2")
lista.SetStringItem(0, 2, "Riga1Colonna3")
lista.InsertStringItem(1, "")
lista.SetStringItem(1, 0, "Riga2Colonna1")
lista.SetStringItem(1, 1, "Riga2Colonna2")
lista.SetStringItem(1, 2, "Riga2Colonna3")

Ciao

--
Antonio Valente


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

  
certo che oggi me ne hai risolti di problemi. Forse ho cercato nella 
'documentazione sbagliata'.O semplicemente non ho capito come funziona 
Python. L'ho scelto per questo mio nuovo progetto perchè volevo 
impararlo meglio e sto imparando tante cose. ;)

Grazie Y3s

P
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python