Forum >> Programmazione Python >> GUI >> Problema a estrapolare posizione slader in una variabile in tkinter

Pagina: Indietro 1 2

In che punto del codice devo mettere la riga sotto? Ho fatto delle prove ma ad ogni modifica della posizione dello slader la chiave non cambia, perchè?

self._scales['adsrv']1.get()



--- Ultima modifica di fabio75 in data 2024-06-23 18:19:39 ---
In che punto del codice devo mettere la riga sotto? Ho fatto delle prove ma ad ogni modifica della posizione dello slader la chiave non cambia, perchè?
self._scales['adsrv'][1].get()


Ovviamente, devi scrivere la riga indicata quando si verificano le condizioni perché venga letta ... le interfacce grafiche si basano sugli "eventi", a livello di codice bisogna gestire gli eventi quando si verifica un evento di interesse, cioè bisogna effettuare il così detto "binding" dell'evento collegando lo stesso evento ad un widget e ad una funzione di "callback" (cioè funzione di gestione dello evento).

Se guardi nello esempio che Ti proposi due anni fa troverai due esempi di binding che collegavano le due categorie di strumenti ai relativi callback per aggiornamento dell'array di etichette li previsto


            sc.bind("<ButtonRelease>", self.on_struments)
...
            sc.bind("<ButtonRelease>", self.on_frequences)

i metodi relativi Ti forniranno un possibile esempio di gestione.

... Naturalmente, quanto sopra è solo la punta dell'iceberc, diverse categorie di widget possono avere gestibili diverse categorie di eventi, possono anche gestire degli "eventi virtuali" specializzati

... insomma, si cade in quello che mi faceva anticipare come dubbia l'utilità di scriverti il codice funzionante, bisogna acquisire familiarità con gli eventi delle GUI per poter andare avanti, esistono moltissime varianti di approccio secondo ciò che vorresti e per la Tua problematica fare lo sai soltanto Tu, Ti è necessario affrontare la problematica approfonditamente, temo.




Ciao







Fatti non foste a viver come bruti...
Ho inserito la riga da te menzionata e messa dentro il ciclo for() di adsrv, poi ho messo un print, ma non funziona.

Ecco il codice così come l'ho modificato.
Che ne pensi?








--- Ultima modifica di fabio75 in data 2024-06-23 20:38:40 ---
Allegati
Ho inserito la riga da te menzionata e messa dentro il ciclo for() di adsrv, poi ho messo un print, ma non funziona.

Ecco il codice così come l'ho modificato.
Che ne pensi?

Che ne penso? : che così non vai da nessuna parte!




Gli esempi che Ti faccio sono, giust'appunto esempi per cercare di farTi intuire come funzionano le cose perché Tu possa indirizzarti per approfondire gli argomenti; se Ti limiti a copiincollare il codice non risolvi nulla.

Ennesima esemplificazione :

1° modifica nel Tuo codice la riga del bind inserita nel gruppo adsrv in questo modo :

...
            sc.set(0)
            sc.bind("<ButtonRelease>", self._on_sc_adsrv)       #bind 
            print(self._scales['adsrv'])                   #print
...
2° inserisci dopo la funzione _on_open(self) questo codice :

    def _on_sc_adsrv(self, evt):
        ''' Stampa l'indice ed il valore dello scale del gtuppo "adsrv" manipolato. '''
        w = evt.widget
        try:
            index = self._scales['adsrv'].index(w)
            value = w.get()
            print(index, '=>', value)
        except ValueError as e:
            return            
avrai così collegato a tutti i widget "scale" del gruppo "adsrv" (e solo a loro) una funzione di callback che al verificarsi dell'evento di rilascio del bottone sinistro del mouse su uno di loro individua lo scale interessato, ne estrae l'indice e stampa l'indice ed il valore assunto dallo scale.

Spero che questo esempio Ti permetta di intuire come affrontare un evento e, approfondendo con la documentazione, di arrivare a gestirli.




La documentazione che ho messo in link, pur se della versione precedente di tkinter, è quella secondo me più chiara esistente, troverai gli eventi al capitolo 54 ... purtroppo, temo che ciò che per me è chiaro possa non esserlo per retroterra diversi dal mio, credo Ti occorra un testo introduttivo, se sei anglodono forse potrebbe esserTi utile il testo "Python and Tkinter Programming (2000).pdf" mooolto datato ma di cui si trovano copie pirata in rete e, forse, versioni più aggiornate da acquistare.

Se non sei anglofono, potrebbe esserTi utile un "work in progress", forse ora abbandonato, scritto da @RicPol (utente che non cesserò mai di ringraziare per l'enorme aiuto che mi ha dato) che verte sul framework wxpython ma i cui concetti di base si applicano più o meno a tutti gli ambianti grafici, con le ovvie differenze, si tratta di "Capire wxPython", è a pagamento ma dal costo irrisorio e secondo me vale la pena di leggerlo.




Il consiglio che mi sento di darTi è di sospendere un attimo lo sviluppo che hai in corso e di studiare il funzionamento dei framework grafici, senza i concetti base non sarai in grado di progettare una tua applicazione (si, ci vuole un pogetto, prima di "fare")




Ciao

Fatti non foste a viver come bruti...


Pagina: Indietro 1 2



Esegui il login per scrivere una risposta.