View Full Version : Qualche chiarimento su Python
ciao a tutti
vorrei avvicinarmi per la prima volta ad un linguaggio di programmazione, anche se ho avuto varie brevi esperienze con il c, html,php quindi non sono proprio a digiuno. avrei optato per python per via della sua semplicità e della sua potenza su sistemi operativi unix based.
volevo un po' di chiarimenti sulla crezione delle interfacce grafiche in python. per creare l'interfaccia grafica(quando saro capace di creare un programma :asd: )vorrei basarmi sulle librerie gtk. in rete ho letto che esiste un plugin chiamato pygtk che permette la creazione di queste interfacce grafiche, ma non ho capito bene a dir la verità cos'è precisamente :confused:
io vorrei un tool diciamo che mi permettesse di creare interfacce alla visual basic, cioe disegnando i bottoni, i campi di testo ecc. verso cosa mi devo rivolgere? ho letto anche di glade ma anche qui non ho capito precisamente cosa sia, quindi mi serverebbero dei chiarimenti...
vorrei anche dei chiarimenti se possibile sugli ide per python... ho letto di eclipse con relativo plugin e di altri. qual è il piu completo?
ps: secondo voi è una buona scelta python come linguaggio di programmazione per iniziare?
grazie in anticipo per le risposte :)
Ziosilvio
13-10-2006, 12:25
avrei optato per python per via della sua semplicità e della sua potenza su sistemi operativi unix based.
Ottima scelta.
Io l'ho scoperto nel 2000, e mi ha cambiato l'esistenza.
passi che come primo lavoro faccio il matematico e non il programmatore; ma è stata una vera rivoluzione.
volevo un po' di chiarimenti sulla crezione delle interfacce grafiche in python.
Purtroppo di grafica non so molto.
Avevo copiato e fatto girare un paio di esempi in Tkinter; poi ho fatto la doccia e ho dimenticato tutto :cry:
in rete ho letto che esiste un plugin chiamato pygtk che permette la creazione di queste interfacce grafiche, ma non ho capito bene a dir la verità cos'è precisamente
Dovrebbe essere un insieme di istruzioni Python, che fanno da interfaccia per GTK (che è in un linguaggio diverso, non ricordo se C o Objective-C), ossia ti permettono di scrivere codice Python che adopera le componenti di GTK.
io vorrei un tool diciamo che mi permettesse di creare interfacce alla visual basic, cioe disegnando i bottoni, i campi di testo ecc. verso cosa mi devo rivolgere?
Allora, oltre al plugin, ti serve un ambiente di sviluppo integrato avanzato.
Purtropppo non ne conosco; giro la domanda ai più esperti.
ho letto anche di glade ma anche qui non ho capito precisamente cosa sia, quindi mi serverebbero dei chiarimenti
Come sopra, giro ai più esperti.
vorrei anche dei chiarimenti se possibile sugli ide per python... ho letto di eclipse con relativo plugin e di altri. qual è il piu completo?
Giro anche questa.
secondo voi è una buona scelta python come linguaggio di programmazione per iniziare?
Per iniziare, e anche per continuare, Python è sicuramente un'ottima scelta.
Everyman
13-10-2006, 14:43
uso Python e mi trovo benissimo.
Attualmente ho la versione 2.5 e principalmente uso Python nel campo Speech Recognition per generare bot che fingano di essere operatori nei vari call centres.
Il tutto sulla falsa riga del celebre programma Eliza degli anni 60, magari un po' piu' evoluto :D
Per quanto riguarda le interfacce grafiche di Python, purtroppo, non ti posso aiutare perche' la grafica NON e' il mio campo.
Ma ti consiglio anch'io di usare Python soprattutto se con C++ sei incavolato a bestia :D Tale C++ sara' potente finche' vuoi, ma ragazzi, e' davvero un casino di linguaggio di programmazione, congratulazioni verso chi lo padroneggia, dico davvero.
Python semplifica molte cose, invece. Soprattutto se hai Idle come GUI.
Ciauz!
innanzi tutto grazie per le risposte :D
mi sto appassionando veramente tanto a questo linguaggio di programmazione fantastico. è veramente molto semplice, almeno all'inizio, ho letto un'oretta l'inizio di una guida e riesco gia a fare con successo i primi programmini matematici.
per quanto riguarda la gui ho cercato un po'(anzi parecchio :ciapet: ) stamattina e sono riuscito a trovare un modo semplicissimo per crearla. come programma per farla uso glade e sto prendendo confidenza con le varie widget. poi ho trovato uno script semplicissimo da usare in python che mi permette di trasformare il file xml del progetto di glade in uno script python vero e proprio! si chiama gladegen e quindi ho ottenuto il seguente script della mia semplice interfaccia grafica che avevo creato
#!/usr/bin/env python
#----------------------------------------------------------------------
# Test.py
# Dave Reed
# 10/13/2006
#----------------------------------------------------------------------
import sys
from GladeWindow import *
#----------------------------------------------------------------------
class Test(GladeWindow):
#----------------------------------------------------------------------
def __init__(self):
''' '''
self.init()
#----------------------------------------------------------------------
def init(self):
filename = 'test.glade'
widget_list = [
'window1',
'entry3',
'entry2',
'entry1',
'button1',
]
handlers = [
]
top_window = 'window1'
GladeWindow.__init__(self, filename, top_window, widget_list, handlers)
#----------------------------------------------------------------------
def main(argv):
w = Test()
w.show()
gtk.main()
#----------------------------------------------------------------------
if __name__ == '__main__':
main(sys.argv)
ora devo solo capire come integrare nel testo dello script dell'interfaccia le istruzioni del programma. per esempio come dire a python cosa fare quando si clicca il pulsante ecc. e per questo mi sa che ci vorra un po' di tempo :doh:
se avete suggerimenti sono ben accetti :D
Everyman
13-10-2006, 15:30
Se vuoi avere gli incubi la notte ANCHE con python, mettici NLTK (natural language tool kit) :asd:
Anzi no, progegui con le tue interfacce grafiche, molto meglio.
Senti, volevo chiederti una cosa:
conosci JAVA???
Ho dei problemucci a generare certi bot :cry:
Scusate la mia ignoranza!
Ma cosa sono i bot???
Everyman
13-10-2006, 18:24
Scusate la mia ignoranza!
Ma cosa sono i bot???
Lascia perdere, ti risparmi un bel po' di stress :D
Scherzi a parte, i bot sono dei programmi che generano risposte che paiono provenienti da un programma AI ma che in realta' non lo sono.
Esempio concreto: nel classico call centre, un bot puo' simulare il comportamento di un agente.
Esempio ancor piu' concreto: tu contatti IBM via MSN perche' il tuo pc ti da dei problemi. Tu dice che non ti va questo, che non ti va quello e ricevi delle risposte e suggerimenti utili. Ecco, dall'altra parte non c'e' una persona reale, ma un bot, un programmino che genera rispste a seconda delle tue domande specifiche.
Ecco, io sono quello che svilupperebbe questi bot (del cazzo)
:D
Un conto e' farli in Python (con NLTK tool e' tutto piu' facile), un altro paio di maniche e' farlo in JAVA, dove ultimamente ho dei problemi. Ho infatto aperto un topic a riguardo, ma nessuno mi ha ancora risposto :cry:
:cry:
Se vuoi avere gli incubi la notte ANCHE con python, mettici NLTK (natural language tool kit) :asd:
Anzi no, progegui con le tue interfacce grafiche, molto meglio.
Senti, volevo chiederti una cosa:
conosci JAVA???
Ho dei problemucci a generare certi bot :cry:
grazie per il consiglio ora mi documento e provo anche idle che mi avevi consigliato :sborone:
java fa parte di quei linguaggi che ho provato ed ho abbandonato dopo mezza giornata perchè non avevo voglia di impararmi tutte quelle sintassi astruse :asd:
se vuoi letteralmente disegnare la gui con le gtk puoi usare glade http://glade.gnome.org/
se vuoi letteralmente disegnare la gui con le gtk puoi usare glade http://glade.gnome.org/
sto usando proprio quello!
vorrei creare una piccola applicazione grafica che calcoli il logaritmo di un numero data la base e l'argomento. in modalità testuale l'ho gia creato e funziona perfettamente nella shell di linux. ho creato poi a parte la gui con glade e ho generato il codice python con gladegen.
questi sono il progetto di glade e la libreria per far funzionare lo script e lo script stesso dell'interfaccia
http://www.uploadtemple.com/view.php/1160777601.zip
se eseguite lo script log.py vedrete comparire l'interfaccia grafica. ora io volevo solo sapere come integrare in quella interfaccia(che non fa niente :D ) il mio semplice script per calcolare i logaritmi che è questo
#/usr/bin/env python
import math
print "Inserisci la base del logaritmo"
a = float(raw_input())
print "Inserisci l'argomento"
x = float(raw_input())
log = math.log(x)/math.log(a)
print "Il risultato del logaritmo e'"
print log
non riesco a capire come dire a python che deve prendere la base e l'argomento dai rispettivi entry nell'interfaccia e alla pressione del pulsante scrivere sul terzo entry il risultato :)
inoltre ho notato che questo script gladegen non crea codice pulito in python, ma in pratica l'esecuzione dell'interfaccia dipende sempre dalla presenza del file .glade nella cartella dell'eseguibile. non c'è modo di generare in modo piu pulito codice python vero e proprio per l'interfaccia di glade? :D
non riesco a capire come dire a python che deve prendere la base e l'argomento dai rispettivi entry nell'interfaccia e alla pressione del pulsante scrivere sul terzo entry il risultato :)
Devi 'collegare' gli eventi (il pulsante premuto) alle azioni.
Quella che segue e' una versione 'spartana' del calcolo del log.
import gtk
from math import log
class Window(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
box = gtk.VBox()
self.valueEntry = gtk.Entry()
self.baseEntry = gtk.Entry()
self.go = gtk.Button("Calcola")
self.result = gtk.Label()
box.pack_start(self.valueEntry)
box.pack_start(self.baseEntry)
box.pack_start(self.go)
box.pack_start(self.result)
self.add(box)
self.go.connect('clicked', self._updateResult )
self.show_all()
def _updateResult(self,button):
try:
value = float( self.valueEntry.get_text() )
base = float( self.baseEntry.get_text() )
result = log(value)/log(base)
self.result.set_text( str( result ) )
except Exception, e:
self.result.set_text( "Errore: %s" % str(e) )
w = Window()
gtk.main()
Osserva la riga in grasseto: sta ad indicare che quando avviene l'evento 'clicked' sull'oggetto go, viene chiamato il metodo specificato. Questo non fa altro che prendere il valore dai due campi, effettuare il calcolo e poi aggiornare l'etichetta in fondo.
Ti consiglio di dare una occhiata al tutorial
http://www.pygtk.org/pygtk2tutorial/index.html
in particolare la sezione sui segnali e le callback:
http://www.pygtk.org/pygtk2tutorial/sec-TheoryOfSignalsAndCallbacks.html
non c'è modo di generare in modo piu pulito codice python vero e proprio per l'interfaccia di glade? :D
si': o ti scrivi il codice a mano, o usi glade senza generare codice python, e in ogni caso sono secondo me soluzioni migliori: se mescoli il codice dell'interfaccia con altro codice, farai fatica a rigenerarlo ; se non lo fai, tanto vale caricarsi il file xml e morta li'.
Devi 'collegare' gli eventi (il pulsante premuto) alle azioni.
Quella che segue e' una versione 'spartana' del calcolo del log.
import gtk
from math import log
class Window(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
box = gtk.VBox()
self.valueEntry = gtk.Entry()
self.baseEntry = gtk.Entry()
self.go = gtk.Button("Calcola")
self.result = gtk.Label()
box.pack_start(self.valueEntry)
box.pack_start(self.baseEntry)
box.pack_start(self.go)
box.pack_start(self.result)
self.add(box)
self.go.connect('clicked', self._updateResult )
self.show_all()
def _updateResult(self,button):
try:
value = float( self.valueEntry.get_text() )
base = float( self.baseEntry.get_text() )
result = log(value)/log(base)
self.result.set_text( str( result ) )
except Exception, e:
self.result.set_text( "Errore: %s" % str(e) )
w = Window()
gtk.main()
Osserva la riga in grasseto: sta ad indicare che quando avviene l'evento 'clicked' sull'oggetto go, viene chiamato il metodo specificato. Questo non fa altro che prendere il valore dai due campi, effettuare il calcolo e poi aggiornare l'etichetta in fondo.
Ti consiglio di dare una occhiata al tutorial
http://www.pygtk.org/pygtk2tutorial/index.html
in particolare la sezione sui segnali e le callback:
http://www.pygtk.org/pygtk2tutorial/sec-TheoryOfSignalsAndCallbacks.html
si': o ti scrivi il codice a mano, o usi glade senza generare codice python, e in ogni caso sono secondo me soluzioni migliori: se mescoli il codice dell'interfaccia con altro codice, farai fatica a rigenerarlo ; se non lo fai, tanto vale caricarsi il file xml e morta li'.
grazie 1000, gentilissimo. piu o meno ho capito come fare anche se ovviamente il codice gtk non lo so scrivere e dovrei imparare :D
io vorrei usare glade perchè ovviamente perderei meno tempo che a scriverle a mano, ma poi vorrei ottenere uno script python, perchè vorrei che il programma finale fosse formato solo da un file come il tuo...
in rete ho trovato un altro script che dice di permettere questo
http://glc.sourceforge.net/
ma mi da questo errore su ubuntu edgy
/usr/lib/python2.4/xmllib.py:9: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead.
warnings.warn("The xmllib module is obsolete. Use xml.sax instead.", DeprecationWarning)
# xml: encoding = UTF-8 standalone = no
DOCTYPE: glade-interface None
comment: 'Generated with glade3 3.0.2 on ...50:52 2006 by slash@localhost'
Traceback (most recent call last):
File "glc.py", line 911, in ?
test()
File "glc.py", line 908, in test
x.generate()
File "glc.py", line 764, in generate
self.top.generate()
File "glc.py", line 748, in generate
gObject.generate(self)
File "glc.py", line 258, in generate
child.generate()
File "glc.py", line 369, in generate
klass = self.attribs["class"]
KeyError: 'class'
mi sa che mi dovro rassegnare ed imparare anche come maneggiare le gtk :(
invece come farei ad utilizzare glade senza generare codice python?
invece come farei ad utilizzare glade senza generare codice python?
Qualcosa come il seguente:
import gtk
import gtk.glade
from math import log
class Window:
def __init__(self):
glade = gtk.glade.XML( 'log.glade' )
self.valueEntry = glade.get_widget('valueEntry')
self.baseEntry = glade.get_widget('baseEntry')
self.result = glade.get_widget('result')
glade.get_widget('go').connect('clicked',self._updateResult )
glade.get_widget('mainWindow').show_all()
def _updateResult(self,button):
try:
value = float( self.valueEntry.get_text() )
base = float( self.baseEntry.get_text() )
result = log(value)/log(base)
self.result.set_text( str( result ) )
except Exception, e:
self.result.set_text( "Errore: %s" % str(e) )
w = Window()
gtk.main()
come vedi si deve caricare il file glade e poi chiedere alla libreria di fornirti i widget di cui hai bisogno.
grazie, mi sa che mi conviene imparare direttamente a scriverla con python :asd:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.