Re: [Python] Utilizzo di Readline con socket
> 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
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
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
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
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
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
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
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
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"
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"
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"
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
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
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
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