<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.6212" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Vorrei proporre del codice relativo al mio
problema, ringrazio anticipatamente chiunque mi darà consigli e indicazioni
per migliorarlo.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Il menu ha quattro diverse funzioni, quale è la più
corretta ? si puo' fare di meglio ?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>La mia idea è quella di aprire finestre
(indipendenti) che avranno funzioni diverse, caricamento dati, aggiornamenti,
visualizzazioni, salvataggi, ricerche ecc...</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>Ciao</FONT></DIV>
<DIV><FONT face=Arial size=2>Marco</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial
size=2>#-------------------------------------------------------------------------------------------------------------<BR>#
Name:
prova_test_gui16.py<BR>#------------------------------------------------------------------------------------------------------------<BR>import
Tkinter<BR>from Tkinter import *<BR>import sys</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>#print 'Number of arguments:', len(sys.argv),
'arguments.'<BR>#print 'Argument List:', str(sys.argv)<BR>Messaggio =
str(sys.argv)</FONT></DIV>
<DIV> </DIV><FONT face=Arial size=2>
<DIV><BR>class Applicazione:<BR> def
__init__(self,finestra):<BR>
finestra.title("Finestra 250x200")<BR>
larghezza =
finestra.winfo_screenwidth()<BR>
altezza =
finestra.winfo_screenheight()<BR>
larghezza= larghezza/2<BR> altezza=
altezza/2<BR>
finestra.geometry("%dx%d+%d+%d" % (larghezza, altezza, 250, 200))</DIV>
<DIV> </DIV>
<DIV><BR>finestra = Tk()<BR>applicazione = Applicazione(finestra)<BR>exitButton
= Tkinter.Button(finestra, text = 'Exit', command =
finestra.destroy)<BR>exitButton.pack(side = 'bottom')</DIV>
<DIV> </DIV>
<DIV>status = Label(finestra, text=Messaggio, bd=1, relief=SUNKEN,
anchor=W)<BR>status.pack(side=BOTTOM, fill=X)</DIV>
<DIV> </DIV>
<DIV>finestra.mainloop()</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV><BR>#------------------------------------------------------------------------<BR>#
Name:
prova_finestra_gui.py<BR>#------------------------------------------------------------------------</DIV>
<DIV> </DIV>
<DIV>import sys<BR>from PyQt4 import QtGui, QtCore </DIV>
<DIV> </DIV>
<DIV>#print 'Number of arguments:', len(sys.argv), 'arguments.'<BR>#print
'Argument List:', str(sys.argv)<BR>Messaggio = str(sys.argv)</DIV>
<DIV> </DIV>
<DIV>class MainWindow(QtGui.QMainWindow):<BR> def
__init__(self):<BR>
QtGui.QMainWindow.__init__(self)</DIV>
<DIV> </DIV>
<DIV>
self.resize(350, 250) # ridimensiona la
finestra<BR>
self.setWindowTitle('MainWindow')<BR>
self.statusBar().showMessage(Messaggio) </DIV>
<DIV>
<BR>app = QtGui.QApplication(sys.argv)<BR>main =
MainWindow()<BR>main.show()<BR>sys.exit(app.exec_())</FONT></DIV><FONT
face=Arial size=2>
<DIV></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial
size=2>#------------------------------------------------------------------------<BR>#
Name:
prova_menuform.py<BR>#------------------------------------------------------------------------</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>from Tkinter import
*
<BR>from tkMessageBox import showerror<BR>from tkFileDialog import
askopenfilename</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>import os <BR>import subprocess</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>def notdone(): <BR>
showerror('Funzione da fare', 'Funzione inesistente') </FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>def apri1():<BR> arg1 =
'pippo'<BR> arg2 = 'pluto'<BR>
cmd="prova_finestra_gui.py " + arg1 + " " + arg2<BR>
os.system(cmd)</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>def apri2():<BR> import
prova_test_gui16</FONT></DIV>
<DIV> </DIV><FONT face=Arial size=2>
<DIV><BR>def apri3():<BR> filename
=askopenfilename(filetypes=[("allfiles","*"),("pythonfiles","*.py")])<BR>
print filename</DIV>
<DIV> </DIV>
<DIV>def apri4():<BR> arg1 = 'Minni'<BR>
arg2 = 'Paperino'<BR> cmd =
"prova_test_gui16.py"<BR> subprocess.call([sys.executable,
cmd, arg1, arg2])</DIV>
<DIV> </DIV>
<DIV># execfile(cmd)</DIV>
<DIV> </DIV>
<DIV><BR>def makemenu(parent):<BR> menubar =
Frame(parent)
<BR> menubar.pack(side=TOP, fill=X)<BR>
<BR> fbutton = Menubutton(menubar, text='File',
underline=0)<BR> fbutton.pack(side=LEFT)<BR>
file = Menu(fbutton)<BR> file.add_command(label='Apri1 system
...', command=apri1, underline=0)<BR>
file.add_command(label='Apri2 import ...', command=apri2,
underline=0)<BR> file.add_command(label='Apri3 filename
.', command=apri3, underline=0)<BR>
file.add_command(label='Apri4 execfile .', command=apri4,
underline=0)<BR>
file.add_command(label='Fine',
command=parent.quit, underline=0)<BR>
fbutton.config(menu=file)</DIV>
<DIV> </DIV>
<DIV> ebutton = Menubutton(menubar, text='Edit',
underline=0)<BR> ebutton.pack(side=LEFT)<BR>
edit = Menu(ebutton, tearoff=0)<BR>
edit.add_command(label='Non usato1', command=notdone,
underline=0)<BR> edit.add_command(label='Non
usato2', command=notdone, underline=0)<BR>
edit.add_separator()<BR> ebutton.config(menu=edit)</DIV>
<DIV> </DIV>
<DIV> submenu = Menu(edit, tearoff=0)<BR>
submenu.add_command(label='Non usato10', command=parent.quit,
underline=0)<BR> submenu.add_command(label='Non usato11',
command=notdone, underline=0)<BR>
edit.add_cascade(label='Non usato11',
menu=submenu,
underline=0)<BR> return menubar</DIV>
<DIV> </DIV>
<DIV>if __name__ == '__main__':<BR> root =
Tk()
<BR> root.title('Gestione di un applicativo in Python27 -
Luglio 2012') <BR>
makemenu(root)
<BR> msg = Label(root, text='Procedura Python di prova')
<BR> msg.pack(expand=YES, fill=BOTH)<BR>
msg.config(relief=SUNKEN, width=70, height=20, bg='gray')<BR>
<BR> w, h = root.winfo_screenwidth(),
root.winfo_screenheight() <BR>#
root.overrideredirect(1) <BR> root.geometry("%dx%d+0+0"
% (w, h)) <BR>
<BR> root.mainloop()</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<BLOCKQUOTE
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV><FONT face=Arial size=2></FONT><FONT face=Arial
size=2></FONT><BR></DIV>Altri probabilmente ti daranno informazioni più
dettagliate o dei link di esempio introduttivi, comunque ti suggerirei di
iniziare a valutare moduli per la creazione di interfacce grafiche come PyQt,
che si ricollega a Qt, libreria molto ben fatta e ben documentata. Esistono
altre librerie come per esempio wxWidgets.<BR><BR>Un buon testo introduttivo
per la programmazione PyQt è 'Rapid GUI Programming with Python and Qt' di
Summerfield, che contiene anche un riepilogo inziale di Python. Vedi: <A
href="http://www.qtrac.eu/pyqtbook.html"
target=_blank>http://www.qtrac.eu/pyqtbook.html</A><BR><BR>Collegando gli
"oggetti" PyQt (finestre, combo boxes, widgets, etc.) a funzioni Python che
puoi distribuire in uno o più scripts, tra loro collegati tramite 'import'
iniziali, puoi costruire una singola applicazione che effettua le operazioni
da te descritte.<BR><BR>Ovviamente non è immediato apprendere come strutturare
il tutto, ma è senz'altro fattibilissimo. <BR>Non conoscendo ASP, non so se,
magari tramite Visual Studio, ti vengono forniti dei 'templates' precostituiti
di interfacce che poi modifichi per quanto necessario, facilitandoti il
lavoro.<BR><BR>ciao <BR>mauro<BR><BR><BR><BR><BR>
<DIV class=gmail_quote>2012/7/29 Marco <SPAN dir=ltr><<A
href="mailto:mlemmi@alice.it" target=_blank>mlemmi@alice.it</A>></SPAN><BR>
<BLOCKQUOTE class=gmail_quote
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><U></U>
<DIV bgcolor="#ffffff">
<DIV><BR></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>
<DIV><FONT face=Arial>Sono un "vecchio" programmatore, sono nato con il
Cobol, ora mi diverto con ASP, ho provato Ruby,Visual Basic,Java, in
modo molto superficiale, però Python ha qualcosa che mi ha
incuriosito</FONT></DIV></FONT><FONT face=Arial>.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV></DIV>
<DIV><FONT face=Arial>Ho grossi problemi a mettere insieme tutte le notizie
ed esempi di questo linguaggio, vorrei vedere come python organizza una
applicazione che inizia con un menu in una finestra a tutto schermo, il menu
dovrebbe dare la possibilità di richiamare "N" finestre contenenti codice
che svolge varie funzioni.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>Esempio:</FONT></DIV>
<DIV><FONT face=Arial>dal menu, richiamare un programma "Varia indirizzi"
che si presenta in una finestra in posizione centrale con
textbox,bottoni,checkbox ecc, una seconda voce di menu che richiama una
nuova finestra che visualizza la tabella indirizzi, una terza voce che
richiama una programma e permette la stampa di una scheda dati letti da un
file ecc.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>Non riesco a capire (non trovo un esempio pratico)
come si possa organizzare una applicazione che preveda molte funzioni
e gestioni, non credo sia possibile racchiudere tutto in un solo
programma.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>Ringrazio</FONT></DIV>
<DIV><FONT face=Arial>Ciao</FONT></DIV>
<DIV><FONT face=Arial>Marco</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV> </DIV><BR><BR>__________ Informazioni da ESET NOD32 Antivirus,
versione del database delle firme digitali 7338 (20120729)
__________<BR><BR>Il messaggio è stato controllato da ESET NOD32
Antivirus.<BR><BR><A href="http://www.nod32.it"
target=_blank>www.nod32.it</A><BR><BR><BR>__________ Informazioni da ESET
NOD32 Antivirus, versione del database delle firme digitali 7338 (20120729)
__________<BR><BR>Il messaggio è stato controllato da ESET NOD32
Antivirus.<BR><BR><A href="http://www.nod32.it"
target=_blank>www.nod32.it</A><BR><BR>_______________________________________________<BR>Python
mailing list<BR><A href="mailto:Python@lists.python.it"
target=_blank>Python@lists.python.it</A><BR><A
href="http://lists.python.it/mailman/listinfo/python"
target=_blank>http://lists.python.it/mailman/listinfo/python</A><BR><BR></BLOCKQUOTE></DIV><BR>
<P>
<HR>
<P></P>_______________________________________________<BR>Python mailing
list<BR>Python@lists.python.it<BR>http://lists.python.it/mailman/listinfo/python<BR><BR><BR><BR>__________
Informazioni da ESET NOD32 Antivirus, versione del database delle firme
digitali 7338 (20120729) __________<BR><BR>Il messaggio è stato controllato da
ESET NOD32 Antivirus.<BR><BR>www.nod32.it<BR><BR></BLOCKQUOTE><BR>
<BR>
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 7338 (20120729) __________<BR>
<BR>
Il messaggio è stato controllato da ESET NOD32 Antivirus.<BR>
<BR>
<A HREF="http://www.nod32.it">www.nod32.it</A><BR>
</BODY></HTML>