Profilo di Sertergi

Nome Sertergi
Indirizzo email n/a
Messaggi3
  • Re: Tkinter e ciclo while
    Forum >> Programmazione Python >> GUI
    Nel mio programma sono riuscito a risolvere sostituendo il ciclo while di Python, con il ciclo after di tk, e inserendo una variabile globale.
    L'esempio seguente è scritto con Python 3.4.2 , mi scuso in anticipo per la mia scrittura basilare con l'utilizzo di variabili globali, ma sono agli inizi :fingers-crossed: ( sto cercando di capire ancora bene la programmazioni a classi )



    Nell'esempio nel ciclo start stampa data e ora come output nella shell di Python




    # importa tutti i moduli Tkinter
    import tkinter
    from tkinter import *
    
    # importa i moduli data e ora
    import datetime
    
    # definisci variabile globale startvar
    global startvar
    startvar = True
    
    # definisci start
    def start():
        global jobstart
        if startvar == True:
            startbutton = Button (text="START", bg="dark green", command=start, state="disabled").grid(row=1, column=0)
            stopbutton = Button (text="STOP/EXIT", bg="red2", command=stop).grid(row=2, column=0)
            dataeora = ("%s" % datetime.datetime.now().isoformat())
            print ("Data e ora : ", dataeora)
            # inserire eventuali altre funzioni nel ciclo di start qui
            finestra.update_idletasks()
            jobstart = finestra.after(1000, start)
    
    # definisci stop
    def stop():
        global jobstart
        finestra.after_cancel(jobstart)
        startbutton = Button (text="START", bg="dark green", command=start, state="normal").grid(row=1, column=0)
        print ("hai premuto stop")
        uscita = messagebox.askyesno(title="USCITA", message="Vuoi davvero Uscire?")
        if uscita :
            finestra.destroy()
        
    # crea la finestra principale
    finestra = Tk ()
    finestra.geometry ('400x240+0+0')
    finestra.title ('Exit loop Tk')
    startbutton = Button (text="START", bg="dark green", command=start).grid(row=1, column=0)
    
    # mainloop finestra
    finestra.update_idletasks()
    finestra.mainloop()
    








    --- Ultima modifica di Sertergi in data 2017-05-29 20:05:52 ---
  • Re: Tkinter e ciclo while
    Forum >> Programmazione Python >> GUI
    Secondo voi si potrebbe risolvere questo specifico problema utilizzando il metodo AFTER in sostituzione al ciclo WHILE ?


    --- Ultima modifica di Sertergi in data 2017-05-18 11:13:32 ---
  • Re: Tkinter e ciclo while
    Forum >> Programmazione Python >> GUI
    Salve a tutti,
    sono alle primissime armi anche io con l'apprendimento di Python(3), e non mi è chiaro il funzionamento con Tkinter ed i cicli while , mi sembra di capire che strutturando così il programma rimane nel ciclo di while e la finestra principale non si aggiorna.

    Ho il tuo stesso scoglio e non capisco come uscire da un ciclo while in seguito alla pressione di un bottone della finestra principale.

    Ho provato ad inserire nel ciclo anche un refresh della schermata con canvas.update_idletasks() , come la creazione del pulsante per interrompere all'interno del ciclo di while, ma senza risultati.

    Scusate la mia ignoranza in materia me se avete una spiegazione mi farebbe comodo.

    Grazie