very simple tkinter demo program

Samantha samantha7395 at hotmail.com
Sun Apr 10 13:35:54 EDT 2005


Thanks that worked.
S
"max(01)*" <max2 at fisso.casa> wrote in message 
news:oE76e.1206995$35.44444963 at news4.tin.it...
> Samantha wrote:
>> I can not get it to run.
>> S
>
> sorry about that. baybe it is a conflict between tabstop width in my 
> editor and in my newsreader.
>
> i substituted tabs with spaces and i hope now you can run it.
>
> bye
>
> macs
>
> ----cuthere----
>
> from Tkinter import *
>
> class MiaApp:
>   def __init__(self, genitore):
>
>     self.MioGenitore = genitore
>
>     fonte = ("Helvetica", "12")
>
>     self.campi = ["Cognome", "Nome" , "Data di nascita"]
>
>     quadro_grande = Frame(genitore)
>     quadro_grande.pack(expand = YES, fill = BOTH)
>
>     quadro_menu = Frame(quadro_grande)
>     quadro_menu.configure(
>       bd = 1,
>       relief = RAISED
>       )
>     quadro_menu.pack(side = TOP, fill = X)
>
>     pm_file = Menubutton(quadro_menu)
>     pm_file.configure(text = "File")
>     pm_file.pack(side = LEFT)
>
>     m_file = Menu(pm_file)
>     pm_file.configure(menu = m_file)
>     m_file.configure(tearoff = NO)
>     m_file.add_command(
>       label = "Scrivi",
>       command = self.premuto_scrivi
>       )
>     m_file.add_command(
>       label = "Leggi",
>       command = self.premuto_leggi
>       )
>     m_file.add_separator()
>     m_file.add_command(
>       label = "Chiudi",
>       command = genitore.destroy
>       )
>
>     pm_mod = Menubutton(quadro_menu)
>     pm_mod.configure(text = "Modifica")
>     pm_mod.pack(side = LEFT)
>
>     pm_aiuto = Menubutton(quadro_menu)
>     pm_aiuto.configure(text = "?")
>     pm_aiuto.pack(side = RIGHT)
>
>     msg = Label(quadro_grande)
>     msg.configure(
>       font = fonte,
>       relief = RIDGE,
>       wraplength = "10c",
>       justify = LEFT,
>       text = u"Questo \u00E8 un programma in Python \
> che trae ispirazione da un analogo lavoro del collega \
> G. Renda. Il programma originale era scritto \
> in linguaggio Java, e sfruttava le librerie JFC \
> (\u00ABJava Foundation Class\u00BB, dette anche \
> \u00ABSwing\u00BB); questo invece usa le librerie Tk, \
> mediante il modulo Tkinter."
>       )
>     msg.pack(
>       side = TOP,
>       padx = "2m",
>       pady = "2m"
>       )
>
>     quadro_pulsanti = Frame(quadro_grande)
>     quadro_pulsanti.pack(
>       side = BOTTOM,
>       fill = X,
>       padx = "2m",
>       pady = "2m"
>       )
>
>     scrivi = Button(quadro_pulsanti)
>     scrivi.configure(
>       text = "Scrivi",
>       command = self.premuto_scrivi
>       )
>     scrivi.pack(side = LEFT, expand = YES)
>
>     leggi = Button(quadro_pulsanti)
>     leggi.configure(text = "Leggi", command = self.premuto_leggi)
>     leggi.pack(side = LEFT, expand = YES)
>
>     chiudi = Button(quadro_pulsanti)
>     chiudi.configure(text = "Chiudi", command = genitore.destroy)
>     chiudi.pack(side = LEFT, expand = YES)
>
>   def premuto_scrivi(self):
>     InserimentoRecord()
>
>   def premuto_leggi(self):
>     ConsultazioneRecord()
>
> class InserimentoRecord(Toplevel):
>   def __init__(self):
>
>     Toplevel.__init__(self)
>
>     self.titolo = "Inserimento"
>     self.wm_title(self.titolo)
>
>     quadro_grande = Frame(self)
>     quadro_grande.pack(expand = YES, fill = BOTH)
>
>     self.quadro_pulsanti = Frame(quadro_grande)
>     self.quadro_pulsanti.pack(
>       side = BOTTOM,
>       fill = X,
>       padx = "2m",
>       pady = "2m"
>       )
>
>     quadri_ing = []
>     self.n = len(miaApp.campi)
>     self.var = []
>     eti = []
>     larg_eti = max(map(len, miaApp.campi))
>     ing = []
>     for i in range(self.n):
>       quadri_ing.append(None)
>       self.var.append(None)
>       ing.append(None)
>       eti.append(None)
>       quadri_ing[i] = Frame(quadro_grande)
>       quadri_ing[i].pack(side = TOP, expand = YES, fill = BOTH)
>       self.var[i] = StringVar()
>       eti[i] = Label(quadri_ing[i])
>       eti[i].configure(
>         text = miaApp.campi[i] + ": ",
>         width = larg_eti,
>         anchor = E
>         )
>       eti[i].pack(side = LEFT, pady = 5, padx = 10, fill = X)
>       ing[i] = Entry(quadri_ing[i], textvariable = self.var[i])
>       ing[i].pack(side = LEFT, pady = 5, padx = 10, fill = X)
>
>     self.salva = Button(self.quadro_pulsanti)
>     self.salva.configure(
>       text = "Salva",
>       command = self.premuto_salva
>       )
>     self.salva.pack(side = LEFT, expand = YES)
>
>     self.annulla = Button(self.quadro_pulsanti)
>     self.annulla.configure(
>       text = "Annulla",
>       command = self.premuto_annulla
>       )
>     self.annulla.pack(side = LEFT, expand = YES)
>
>   def premuto_salva(self):
>     import tkFileDialog
>     import pickle
>
>     dati = []
>     for i in range(self.n):
>       dati.append(None)
>       dati[i] = self.var[i].get()
>
>     nomefile = tkFileDialog.asksaveasfilename(
>       defaultextension = ".ana",
>       filetypes = [
>         ("Record anagrafici", "*.ana"),
>         ("Tutti i file", "*")
>         ]
>       )
>
>     if nomefile:
>       f = open(nomefile, "w")
>       pickle.dump(dati, f)
>       f.close()
>
>     self.destroy()
>
>   def premuto_annulla(self):
>     self.destroy()
>
> class ConsultazioneRecord(Toplevel):
>   def __init__(self):
>
>     import tkFileDialog
>
>     nomefile = tkFileDialog.askopenfilename(
>       defaultextension = ".ana",
>       filetypes = [
>         ("Record anagrafici", "*.ana"),
>         ("Tutti i file", "*")
>         ]
>       )
>
>     if nomefile:
>
>       try:  ### Il metodo 'pickle.load' potrebbe generare una
>             ### eccezione se l'utente cerca di aprire un file
>             ### non del formato giusto
>
>         Toplevel.__init__(self)
>
>         self.titolo = "Consultazione"
>         self.wm_title(self.titolo)
>
>         quadro_grande = Frame(self)
>         quadro_grande.pack(expand = YES, fill = BOTH)
>
>         eti_rec = Label(quadro_grande)
>         eti_rec.configure(
>           text = "Record: " + nomefile,
>           relief = RIDGE
>           )
>         eti_rec.pack(
>           side = TOP,
>           fill = X,
>           padx = "5m",
>           pady = "5m"
>           )
>
>         self.quadro_pulsanti = Frame(quadro_grande)
>         self.quadro_pulsanti.pack(
>           side = BOTTOM,
>           fill = X,
>           padx = "2m",
>           pady = "2m"
>           )
>
>         import pickle
>
>         quadri_eti = []
>         eti_campi = []
>         eti_val = []
>         larg_eti_campi = max(map(len, miaApp.campi))
>         f = open(nomefile, "r")
>
>         valori = pickle.load(f)  ### Potrebbe generare una
>                                  ### eccezione 'KeyError'
>
>         larg_eti_val = max(map(len, valori))
>         n = len(miaApp.campi)
>         for i in range(n):
>           quadri_eti.append(None)
>           eti_campi.append(None)
>           eti_val.append(None)
>           quadri_eti[i] = Frame(quadro_grande)
>           quadri_eti[i].pack(side = TOP, expand = YES, fill = BOTH)
>           eti_campi[i] = Label(
>             quadri_eti[i],
>             text = miaApp.campi[i] + ": ",
>             width = larg_eti_campi,
>             anchor = E
>             )
>           eti_campi[i].pack(side = LEFT, pady = 5, padx = 10, fill = X)
>           eti_val[i] = Label(
>             quadri_eti[i],
>             text = valori[i],
>             anchor = W,
>             width = larg_eti_val,
>             relief = SUNKEN
>             )
>           eti_val[i].pack(side = LEFT, pady = 5, padx = 10, fill = X)
>         self.chiudi = Button(self.quadro_pulsanti)
>         self.chiudi.configure(
>           text = "Chiudi",
>           command = self.premuto_chiudi
>           )
>         self.chiudi.pack(side = LEFT, expand = YES)
>
>       except KeyError:  ### Eventualmente generato da
>                         ### 'pickle.load()'
>
>         import tkMessageBox
>
>         tkMessageBox.showwarning(
>           "Bad input",
>           "Illegal values, please try again"
>           )
>         self.destroy()
>
>       f.close()
>
>   def premuto_chiudi(self):
>     self.destroy()
>
> radice = Tk()
> radice.wm_title("Versione Python di un programma Java di G. Renda")
> radice.wm_iconname("giuseppe")
> radice.minsize(400, 300)
> miaApp = MiaApp(radice)
> radice.mainloop() 





More information about the Python-list mailing list