Whoo hooo! Grazie!!
Ora mi sto cimentando con una rubrica dalle funzioni base, ma già all'inizio ho i miei problemi. Visto che i tutorial consigliano di programmare le GUI sempre per classi, anche se ancora non le riesco a capire bene io ho provato ad implementarle.
Il codice finora:
Spoiler:
from Tkinter import *
#Definisco la funzione per aggiungere contatti:
class new_contact:
#Spero di aver capito bene l'uso di __init__()
def __init__():
#Apro una nuova finestra
wNewCon = Toplevel()
#Aggiungo e metto in griglia i widgets
fNewCon = Frame
fNewCon.pack()
lName = Label(fNewCon,text="Name: ").grid(row=0, column=0)
lSurname = Label(fNewCon,text="Surname: ").grid(row=1, column=0)
eName = Entry(fNewCon).grid(row=0, column=1)
eSurname = Entry(fNewCon).grid(row=1, column=1)
#Con bSave rimando a save_contact()
bSave = Button(fNewCon, text="Save", command=save_contact).grid(row =2, column=2)
def save_contact():
#Estraggo name e surname...
name = eName.get()
surname = eSurname.get()
# ...li scrivo sul file dei contatti..
cons = open("contatti.txt", "a")
cons.append(name, surname)
#...che poi chiudo
cons.close()
def new_contact():
#Creo l'istanza di new_contact
new = new_contact
#Faccio partire il tutto aggiungendo adeguati widgets
main = Tk()
fMain = Frame(main)
fMain.pack()
bNew = Button(fMain, text="New", command = new_contact)
bNew.pack()
Il problema è che quando creo l'istanza di un new_contact non si apre nessuna nuova finesta. Quindi l'__init__ (e di conseguenza il Toplevel()) non si è attivato??
A voi.
Ciao
EDIT: forse ho risolto inserendo un "self" come parametro richiesto da __init__, ma cosa significa questo "self"??
Inoltre sorge un altro problema: non visualizza il bottone "Save" nella finestra wNewCon sollevando l'eccezione che non è stato definito il comando Save_contact... eppure come vedete è definito nella stessa classe... spostandolo prima della creazione del bottone invece, il bottone viene mostrato, ma quando ci clicco sopra l'eccezione sollevata è riferita a eSurname (che è una Entry) ed è "None Type has no attribute 'get'"