Vorrei proporre del codice relativo al mio problema, ringrazio anticipatamente chiunque mi darà consigli e indicazioni per migliorarlo.
Il menu ha quattro diverse funzioni, quale è la più corretta ? si puo' fare di meglio ? La mia idea è quella di aprire finestre (indipendenti) che avranno funzioni diverse, caricamento dati, aggiornamenti, visualizzazioni, salvataggi, ricerche ecc... Ciao Marco #------------------------------------------------------------------------------------------------------------- # Name: prova_test_gui16.py #------------------------------------------------------------------------------------------------------------ import Tkinter from Tkinter import * import sys #print 'Number of arguments:', len(sys.argv), 'arguments.' #print 'Argument List:', str(sys.argv) Messaggio = str(sys.argv) class Applicazione: def __init__(self,finestra): finestra.title("Finestra 250x200") larghezza = finestra.winfo_screenwidth() altezza = finestra.winfo_screenheight() larghezza= larghezza/2 altezza= altezza/2 finestra.geometry("%dx%d+%d+%d" % (larghezza, altezza, 250, 200)) finestra = Tk() applicazione = Applicazione(finestra) exitButton = Tkinter.Button(finestra, text = 'Exit', command = finestra.destroy) exitButton.pack(side = 'bottom') status = Label(finestra, text=Messaggio, bd=1, relief=SUNKEN, anchor=W) status.pack(side=BOTTOM, fill=X) finestra.mainloop() #------------------------------------------------------------------------ # Name: prova_finestra_gui.py #------------------------------------------------------------------------ import sys from PyQt4 import QtGui, QtCore #print 'Number of arguments:', len(sys.argv), 'arguments.' #print 'Argument List:', str(sys.argv) Messaggio = str(sys.argv) class MainWindow(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.resize(350, 250) # ridimensiona la finestra self.setWindowTitle('MainWindow') self.statusBar().showMessage(Messaggio) app = QtGui.QApplication(sys.argv) main = MainWindow() main.show() sys.exit(app.exec_()) #------------------------------------------------------------------------ # Name: prova_menuform.py #------------------------------------------------------------------------ from Tkinter import * from tkMessageBox import showerror from tkFileDialog import askopenfilename import os import subprocess def notdone(): showerror('Funzione da fare', 'Funzione inesistente') def apri1(): arg1 = 'pippo' arg2 = 'pluto' cmd="prova_finestra_gui.py " + arg1 + " " + arg2 os.system(cmd) def apri2(): import prova_test_gui16 def apri3(): filename =askopenfilename(filetypes=[("allfiles","*"),("pythonfiles","*.py")]) print filename def apri4(): arg1 = 'Minni' arg2 = 'Paperino' cmd = "prova_test_gui16.py" subprocess.call([sys.executable, cmd, arg1, arg2]) # execfile(cmd) def makemenu(parent): menubar = Frame(parent) menubar.pack(side=TOP, fill=X) fbutton = Menubutton(menubar, text='File', underline=0) fbutton.pack(side=LEFT) file = Menu(fbutton) file.add_command(label='Apri1 system ...', command=apri1, underline=0) file.add_command(label='Apri2 import ...', command=apri2, underline=0) file.add_command(label='Apri3 filename .', command=apri3, underline=0) file.add_command(label='Apri4 execfile .', command=apri4, underline=0) file.add_command(label='Fine', command=parent.quit, underline=0) fbutton.config(menu=file) ebutton = Menubutton(menubar, text='Edit', underline=0) ebutton.pack(side=LEFT) edit = Menu(ebutton, tearoff=0) edit.add_command(label='Non usato1', command=notdone, underline=0) edit.add_command(label='Non usato2', command=notdone, underline=0) edit.add_separator() ebutton.config(menu=edit) submenu = Menu(edit, tearoff=0) submenu.add_command(label='Non usato10', command=parent.quit, underline=0) submenu.add_command(label='Non usato11', command=notdone, underline=0) edit.add_cascade(label='Non usato11', menu=submenu, underline=0) return menubar if __name__ == '__main__': root = Tk() root.title('Gestione di un applicativo in Python27 - Luglio 2012') makemenu(root) msg = Label(root, text='Procedura Python di prova') msg.pack(expand=YES, fill=BOTH) msg.config(relief=SUNKEN, width=70, height=20, bg='gray') w, h = root.winfo_screenwidth(), root.winfo_screenheight() # root.overrideredirect(1) root.geometry("%dx%d+0+0" % (w, h)) root.mainloop() 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. 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: http://www.qtrac.eu/pyqtbook.html 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. Ovviamente non è immediato apprendere come strutturare il tutto, ma è senz'altro fattibilissimo. 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. ciao mauro 2012/7/29 Marco <mle...@alice.it> 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 . 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. Esempio: 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. 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. Ringrazio Ciao Marco __________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 7338 (20120729) __________ Il messaggio è stato controllato da ESET NOD32 Antivirus. www.nod32.it __________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 7338 (20120729) __________ Il messaggio è stato controllato da ESET NOD32 Antivirus. www.nod32.it _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python ------------------------------------------------------------------------------ _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python __________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 7338 (20120729) __________ Il messaggio è stato controllato da ESET NOD32 Antivirus. www.nod32.it __________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 7338 (20120729) __________ Il messaggio è stato controllato da ESET NOD32 Antivirus. www.nod32.it
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python