Forum >> Principianti >> Creazione Slider/Cursore scorrevole

Pagina: 1

Buongiorno a tutti , io dovrei creare un cursore che scorre con cadenza di 1 secondo .... da 0 a 100 (x esempio).
Il mio problema non è tanto creare e dimensionare il cursore con il comando scale ma è coma fare in modo (ammesso che si possa) che al crescere di un contatore il cursore scorra la scala per darmi l'idea del passaggio del tempo.

Ho provato a googlare ma non ho trovato esempi che fanno "muovere" il cursore da solo...
Utilizzo Python 3.7 su Linux

Grazie a chi potrà aiutarmi.

ops, mi sono accorto ora che mi ero fissato con lo slider .... invece di valutare le Progress bar. :sleepy:


--- Ultima modifica di trescon in data 2020-07-10 14:32:21 ---


--- Ultima modifica di trescon in data 2020-07-10 14:56:09 ---
------
Alberto
Sì ma se non dici quale gui framework stai usando, capisci bene che...

comunque, se il tuo gui framework supporta i timer, usa un timer che "pulsa" emettendo un evento ogni secondo, cattura l'evento emesso e fai avanzare il cursore di un tic.


Probabilmente devi anche preoccuparti di disabilitare quel cursore, perché altrimenti l'utente potrebbe metterci le mani contemporaneamente.

Grazie Ricpol ma sono ancora in alto mare.... e utilizzo tkinter ; ho provato a fare delle googlate ma tutte le le indicazioni che ho trovato sulle progressbar ... hanno esempi che non funzionano.
Mi sai indicare una guida / libreria che mi dia degli esempi ?

Possibile che nella doc ufficiale non ci sia neppure un esempio ?




Grazie e scusa per l'ignoranza


--- Ultima modifica di trescon in data 2020-07-12 16:52:47 ---
------
Alberto
Ho provato anche a seguire le indicazioni qui riportate : https://progressbar-2.readthedocs.io/en/master/



ma gli esempi (ho provato solo il primo) non funzionano.




Penso di avere dei problemi a capire come "lavora l'ecosistema Python" !




Grazie
------
Alberto
Sì ma se non dici quale gui framework stai usando, capisci bene che...

comunque, se il tuo gui framework supporta i timer, usa un timer che "pulsa" emettendo un evento ogni secondo, cattura l'evento emesso e fai avanzare il cursore di un tic.


Probabilmente devi anche preoccuparti di disabilitare quel cursore, perché altrimenti l'utente potrebbe metterci le mani contemporaneamente.


Io utilizzo tkinter e se utilizzo una progress bar .... non dovrei piu' avere di che preoccuparmi ....giusto ?



------
Alberto
sì, sarebbe meglio iniziare a usare un gui framework serio... comunque vedo che anche tkinter ha un concetto limitato di timer... cerca in giro per root.after().
sì, sarebbe meglio iniziare a usare un gui framework serio... comunque vedo che anche tkinter ha un concetto limitato di timer... cerca in giro per root.after().

Ciao, letto ieri questo post, @Ripol ha dato l'indicazione "giusta", non so se @trescon abbia risolto ma mi son divertito a realizzare quanto richiesto ed ho pensato di postarlo ... sperando che il codice venga rappresentato correttamente, vedo che nel rendering dei post c'è qualche problema di cui debbo impratichirmi

import tkinter as tk
from tkinter import ttk


class MyApp(tk.Tk):

    def __init__(self):
        super().__init__()
        self.title('Pseudo cronometro')
        lbl = tk.Label(self, text='Minuti durata :')
        lbl.grid(row=0, column=0, sticky='ew')
        self.set_time = tk.Entry(self)
        self.set_time.grid(row=0, column=1, sticky='ew')
        self.prog_bar = ttk.Progressbar(self, mode='determinate')
        self.prog_bar['maximum'] = 60
        self.prog_bar['value'] = 0
        self.prog_bar.grid(row=1, column=0, columnspan=2, sticky='ew')
        self.dida = tk.Label(self, text='0', backgroun='yellow')
        self.dida.grid(row=2, column=0, columnspan=2, sticky='nsew')
        self.bt_num = tk.Button(self, text='Vai coi numeri',
                                  command=self._start)
        self.bt_num.grid(row=3, column=0, sticky='nsew')
        bt_close = tk.Button(self, text='Clicca me per chiudere',
                             command=self.destroy)
        bt_close.grid(row=3, column=1, sticky='nsew')
        self.grid_rowconfigure(2, weight=1)
        self.grid_columnconfigure(0, weight=1)
        self.grid_columnconfigure(1, weight=1)
        self.minute = 0
        self.seconds = 0
        self.end = 0
        self.update()

    def _start(self):
        ends = self.set_time.get()
        if not ends or not ends.isdigit():
            return
        self.end = int(ends)
        self.dida.configure(text='0')
        self.set_time.configure(state='disabled')
        self.bt_num.configure(state='disabled')
        self.minute = 0
        self.seconds = 0
        self.update_data()
        
    def update_data(self):
        self.seconds += 1
        self.prog_bar['value'] = self.seconds
        if self.seconds >= 60:
            self.minute += 1
            self.seconds = 0
            self.dida.configure(text=str(self.minute))
        if self.minute < self.end:
            self.after(1000, self.update_data)
        else:
            self.set_time.configure(state='normal')
            self.bt_num.configure(state='normal')



if __name__ == '__main__':
    app = MyApp()
    app.mainloop()
Ciao ed un saluto a tutti Voi ... non ho trovato dove ci si possa presentare :)

Fatti non foste a viver come bruti...


Pagina: 1



Esegui il login per scrivere una risposta.