Forum
>>
Programmazione Python
>>
GUI
>>
Instanziare la classe...
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
|
Scritto da trescon ![]() |
2026-04-26 23:00:22 - Instanziare la classe...
|
|
Buonasera, nel tentativo di approfondire le classi sto usando due classi principali , una che crea anche l'interfaccia grafica e una per l'accesso al db.
La prima è cosi creata : class Finestra(tk.Tk):
def __init__(self, *args,**kwargs) -> None:
super().__init__(*args,**kwargs)
...
...
..
..
...
if __name__== '__main__':
princ = Finestra()
princ.mainloop()
La seconda è una normale classe per leggere/scrivere il DB.
class Database_fede(): ... ... ... DB Fede = Database_fede()Ecco io dovrei passare dei dati dalla prima classe alla seconda per fare delle ricerche. Se instanzio la classe Finestra() come farei di solito : Fin = Finestra() riesco a passare tranquillamente i per la ricerca sul db solo che mi viene creata l'interfaccia grafica doppia; se non faccio questa instanziazione (Fin = Finestra()) come posso identificare nella classe db che faccio riferimento a delle variabili che "provengono" dalla classe Finestra(). Un grazie a chi volesse aiutarmi. Alberto ------
Alberto |
|
|
Scritto da nuzzopippo ![]() |
2026-04-28 17:14:09 - Re: Instanziare la classe...
|
|
Ciao @trescon
Precisa bene l'environment della domanda : la classe "database" che stai cercando di fare è un oggetto dati oppure una finestra per la gestione dei dati? Chiedo questo perché sarebbero oggetti con caratteristiche diverse ... oddio, fondamentalmente sempre oggetti, ma una finestra richiede alcuni accorgimenti particolari generati dal mainloop e dagli eventi cui deve rispondere. Fatti non foste a viver come bruti... |
|
|
Scritto da trescon ![]() |
2026-05-04 10:25:02 - Re: Instanziare la classe...
|
Ciao Giuseppe la classe database servirebbe per fare delle ricerche in base ad alcuni dati ricevuti a schermo dalla classe Finestra; i risultati dovrebbero poi essere visualizzati dalla classe Finestra.
Spero di essere stato chiaro Grazie Alberto ------
Alberto |
|
|
Scritto da nuzzopippo ![]() |
2026-05-06 06:28:09 - Re: Instanziare la classe...
|
Ciao Alberto
Si, credo di aver compreso ... e Ti consiglio una cosa : separa la logica delle finestre dalla logica di gestione dati, ciò per avere "raccolto" il codice secondo gli aspetti che esso deve contenere. Cerco di spiegarmi : di per se, le finestre sono finalizzate a far visualizzare ad un utente dei dati ed a raccoglierne le richieste. Ragionando con mentalità OOP la logica da implementare in esse dovrebbe essere mirata soltanto a gestire gli eventi di richiesta da parte dell'utente, leggere i dati da utilizzare quali parametri in richieste da rivolgere ad altri oggetti destinati alla gestione e ricerca dei dati che poi le finestre stesse rappresenteranno ... questa è la parte "view" del "famoso" pattern "Model-View-Controller", (Ti invito a leggere quanto nel link) nel quale gli oggetti che si occupano dei dati rappresentano il "Model". Tornando alla Tua domanda iniziale, che potremmo riassumere in : come faccio a far interagire le finestre (che sono "oggetti") tra loro ed avere i dati che mi servono? La risposta è semplice : utilizzando i metodi (che implementerai) e le variabili di istanza (che definirai). A Tal proposito è necessario avere ben chiaro cosa sono le variabili di classe e di istanza, è una cosa necessaria, come d'altronde si deve avere ben chiari i concetti di classe ed oggetto, non se ne può fare a meno e ricorrere al manuale è il minimo che bisogna fare. Stavo preparando un esempio ma mi son reso conto che non avrebbe aiutato, è necessario mettersi, leggere e provare per capire. In soldoni Ti espongo la metodologia che penso sia la più semplice da applicare : 1 : Utilizzare una gerarchia di finestre specializzate sugli aspetti che devono gestire, la principale sarà un oggetto derivato dalla classe tkinter.TK (un sub-classamento, naturalmente, come le altre) da essa (o anche da altre) discendono tutte le altre che deriveranno dalla classe tkinter.Toplevel od anche dalle classi Dialog di tkinter. Tutte tali finestre si occuperanno di gestire le volontà espresse dall'utente (tramite i comandi e le opzioni che esse metteranno a disposizione), raccogliere i dati necessari per eventuali richieste e presentare i dati ricevuti da eventuali risposte. Per le necessità inerenti alla gestione dati le finestre si interfacceranno ad uno o più oggetti dedicati allo scopo che condivideranno in maniera statica quali variabili di istanza ovvero eventualmente temporanea quali parametri dei metodi che le finestre esporranno. 2 : Definire uno o più oggetti (ma preferibilmente uno, meno confusione) specializzato per i dati, esso si occuperà di eventuali connessioni, inserimento e ricerca dati, esporrà metodi preposti tanto alla ricerca quanto allo inserimento dei dati, i parametri di tali metodi forniranno i dati di cui avrà bisogno, i metodi preposti alla ricerca torneranno le liste di dati trovati. Ovviamente, il flusso di informazioni tra gli oggetti finestre e dati avverrò tra loro tramite i metodi parametrizzati che dovranno essere implementati nella definizione delle classi. in tale implementazione dovrà provvedersi la logica inerente la eventuale memorizzazione dei dati ricevuti in variabili di istanza, ovvero l'elaborazione o la mera esposizione dei dati stessi. Spero Ti sia sufficiente, di esempi ne hai già ricevuti parecchi, prova ad impostare di Tuo un discorso a piccoli passi su tale filo conduttore. Fatti non foste a viver come bruti... |
Pagina: 1
Esegui il login per scrivere una risposta.


