Već sam manje više ostvario ono što sam zamislio ali mi se javio jedan propust kojeg me mogu da se oslobodim a problem je više u domenu wx-a nego pitona.
Program parsira html fajlove i izdvaja iz njega linkove ka e-knjgama. On od svakog linka stvara objekat klase Veza sa atributom koji označava ime veze (tj. ono između <a ...> i </a>) i putanjom (ono u href). Ovi objekti se smeštaju u niz koji sam ja nazvao veze. Od atributa objekata u nizu vrši se popunjavanje tabele (wxGrid). Znači tabela samo odslikava niz veze.
Polja u 1. koloni tabele su imena veza i ona se mogu menjati. Kada se izmeni vrednost i kada se selektuje drugo polje tabele javlja se GrigCellChange događaj koji menja atribut u odgovarajućem objektu niza veze. Problem je u situacii kada se izvrši promena polja tabele, a ne selektuje se drugo polje. Tada nema GrigCellChange događaja. I ako se u toj situaciji pritisne neko od dugmića nastaje haos.
Počinje da se odigrava događaj vezan za to dugme (npr. Novi ili Otvori). On ili obriše ili učita nove objekte u niz veze. Tabela će prvo izbrisati sve redove da bi ih popunila sa novim stanjem niza veze. U toku tog brisanja će se okinuti GrigCellChange koji će ili pokušati da pristupi članu niza koji ne postoji => IndexError, ili će promeniti totalno deseti objekat klase Veza, koji pripada nekom drugom fajlu koji je u međuvremenu isparsiran.
Kako da napravim da se GrigCellChange javi čim se klikne negde van tabele i to pre nego što se javi događaj povezan sa elementom na koji se klikće?
Prikačio sam čitav program i napisao sam gomilu print naredbi iz kojih se vidi kako problem nastaje.