[Python] Applicazione python
Marco
mlemmi a alice.it
Dom 29 Lug 2012 23:21:19 CEST
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 <mlemmi a 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 a lists.python.it
http://lists.python.it/mailman/listinfo/python
------------------------------------------------------------------------------
_______________________________________________
Python mailing list
Python a 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
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20120729/fa6ee5e1/attachment-0001.html>
Maggiori informazioni sulla lista
Python