Programma con Tkinter ....

di il
3 risposte

Programma con Tkinter ....

Buonasera, ho un programma che utilizza una interfaccia grafica con Tkinter.

Il programma molto basico, utilizza un db sqlite per scambiare dei messaggi in rete; il problema arriva quando arriva un nuovo messaggio come posso fare a saperlo.

Ho pensato di far in modo che ogni 30/40 secondi vado a vedere nel db se ci sono variazioni…… il problema è che non so come inserire la cosa nel loop di tkinter.

Grazie

Alberto

3 Risposte

  • Re: Programma con Tkinter ....

    Diciamo che i problemi sono molti:

    1. un'interfaccia utente NON DEVE contenere della logica applicativa ma SOLO la logica relativa all'interfaccia utente!
    2. il modello classico per implementare un'interfaccia utente si chiama Model View Controller. Devi STUDIARLO per capire come implementarlo. 
      Sembra una stupidaggine MA se segui la logica MVC, l'implementazione risultera' “logica” ;-) con meno pasticci e meno problemi
    3. python ha molti meccanismi per gestire la ricezione di messagi su rete in modo “asincrono”.

    .

    Ad esempio:

    https://docs.python.org/3/library/asyncio.html

    https://docs.python.org/3/library/asyncio-task.html

    .
    Quindi gli approcci sono molti. 
    Il tuo e' “moolto basico”. Si usa quando non vengono richeste particolari performance :
    NON PUOI metterti a fare query ogni 10 millisecondi!!!! 
    MA se fai il test una volta ogni 30/60 secondi, va piu' che bene.
    .

  • Re: Programma con Tkinter ....

    25/03/2024 - migliorabile ha scritto:


    Diciamo che i problemi sono molti:

    1. un'interfaccia utente NON DEVE contenere della logica applicativa ma SOLO la logica relativa all'interfaccia utente!
    2. il modello classico per implementare un'interfaccia utente si chiama Model View Controller. Devi STUDIARLO per capire come implementarlo. 
      Sembra una stupidaggine MA se segui la logica MVC, l'implementazione risultera' “logica” ;-) con meno pasticci e meno problemi
    3. python ha molti meccanismi per gestire la ricezione di messagi su rete in modo “asincrono”.

    .

    Ad esempio:

    https://docs.python.org/3/library/asyncio.html

    https://docs.python.org/3/library/asyncio-task.html

    .
    Quindi gli approcci sono molti. 
    Il tuo e' “moolto basico”. Si usa quando non vengono richeste particolari performance :
    NON PUOI metterti a fare query ogni 10 millisecondi!!!! 
    MA se fai il test una volta ogni 30/60 secondi, va piu' che bene.
    .

    Grazie Migliorabile per il suggerimento , ma andando a vedere il tuo suggerimento “ottimale” mi sembra troppo impegnativo per le mie competenze.

    Quindi io vorrei qualche suggerimento per far in modo che partendo dalla root.mainloop mi permette di avviare una routine ogni 40/60 secondi che mi verifica i nuovi messaggi nel db; i tempi potrebbero anche arrivare ai 80/90 secondi , non cambierebbe molto.

    Io intatno approfondisco Asyncio…..

    Grazie

  • Re: Programma con Tkinter ....

    25/03/2024 - migliorabile ha scritto:


    Diciamo che i problemi sono molti:

    1. un'interfaccia utente NON DEVE contenere della logica applicativa ma SOLO la logica relativa all'interfaccia utente!
    2. il modello classico per implementare un'interfaccia utente si chiama Model View Controller. Devi STUDIARLO per capire come implementarlo. 
      Sembra una stupidaggine MA se segui la logica MVC, l'implementazione risultera' “logica” ;-) con meno pasticci e meno problemi
    3. python ha molti meccanismi per gestire la ricezione di messagi su rete in modo “asincrono”.

    .

    Ad esempio:

    https://docs.python.org/3/library/asyncio.html

    https://docs.python.org/3/library/asyncio-task.html

    .
    Quindi gli approcci sono molti. 
    Il tuo e' “moolto basico”. Si usa quando non vengono richeste particolari performance :
    NON PUOI metterti a fare query ogni 10 millisecondi!!!! 
    MA se fai il test una volta ogni 30/60 secondi, va piu' che bene.
    .

    Buonasera, ho dato un'occhiata ad Asyncio ma un po' l'inglese, un po' la neofilia non ho capito come poter inserire una routine asyncio all'interno di un programma co interfaccia tkinter.

    Saresti in gradi di farmi due righe di esempio di integrazione tra le due procedure ?

    Grazie

    Alberto

Devi accedere o registrarti per scrivere nel forum
3 risposte