Accesso ai dati nel widget

0

Sfondo

Ho iniziato a essere coinvolto in un progetto scritto in python e wxPython (per la GUI). Il mio compito è eseguire il debug e aggiungere alcune funzionalità alla GUI.

I widget sono organizzati principalmente con sizers e l'applicazione nel suo complesso ha un bell'aspetto a una certa dimensione e risoluzione dello schermo. La prima cosa che ho fatto è stato raggruppare alcuni elementi in alcuni pannelli e separarli con splitter ( wx.SplitterWindow ). Ma la gerarchia dei widget è cambiata; in una riga di codice dovevo passare da:

class CustomGrid(wx.grid.Grid):
    def __init__(self, parent, name, config):
        # ...
        self.data = self.GetParent().data

a:

class CustomGrid(wx.grid.Grid):
    def __init__(self, parent, name, config):
        # ...
        self.data = self.GetParent().GetParent().GetParent().data

È brutto. In un'altra istanza una classe di widget viene inserita in due posti diversi e data non si trova allo stesso livello genitore .

Domande

Sospetto che ci sia qualcosa di sbagliato nell'architettura qui. Come / devo separare i dati dalla GUI?

Qualunque suggerimento e / o link a blog o altre domande sarebbe bello per iniziare. Inoltre come esprimere meglio la mia domanda? (Non vedo l'ora di imparare il gergo adatto e forse modificare il titolo!)

    
posta Hugues Fontenelle 07.07.2015 - 09:14
fonte

1 risposta

1

La risoluzione del widget relativa (genitore-figlio) è ... brutta . Rende il tuo codice impostato in pietra e GUI immutabile. Tutti i tuoi widget devono essere isolati l'uno dall'altro il più possibile.

Suggerisco di tenere traccia di tutti gli oggetti rilevanti in un dizionario.

_widget_dict = {"oranges_grid": oranges.grid, "apples_window": apples.mywindow}

Questo è simile a ** GtkBuilder in GTK + - mantenendo un riferimento in un libro sei in grado di accedervi facilmente fornendo un nome.

def get_widget(widget_id):
    return _widget_dict[widget_id]
    
risposta data 22.10.2015 - 04:08
fonte

Leggi altre domande sui tag