[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