[risolto] - text con evidenziazione dei secondi rimanenti

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
maresama
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1639
Iscrizione: mercoledì 9 gennaio 2008, 16:00

[risolto] - text con evidenziazione dei secondi rimanenti

Messaggio da maresama »

In un vecchio programma in Python 2.7 viene visualizzato un testo con 'text'
in attesa di un posizionamento del cursore su certe righe.
Per fare questa scelta sono previsti 10 secondi, dopodichè esce.
Il numero di secondi è evidenziato sul video in una 'label'
Però ovviamente il tempo indicato è sempre 10.
Vorrei fare in maniera che la 'label' indichi il tempo rimanente , quindi cambiando
ogni secondo trascorso. (o ogni due)
Ritengo che sia molto complicato da fare, ma forse sbaglio
Qualcuno può suggerirmi una soluzione che non stravolga il programma originale
(che non si vuole assolutamente rifare), oppure indicarmi un esempio dal quale
avere indicazioni?
Non posso riportare il programma ma credo che sia inutile.
Il programma non usa le classi ed è abbastanza lineare.
grazie
Ultima modifica di maresama il giovedì 2 settembre 2021, 23:49, modificato 2 volte in totale.
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: text con evidenziazione dei secondi rimanenti

Messaggio da vaeVictis »

Riportare il programma non è inutile, altrimenti si cosa stiamo parlando? Non citi un modulo, non citi niente di cosa faccia in concreto il programma.
È tua responsabilità mettere chi ti aiuta in condizione di farlo. Pertanto, posta un esempio di codice per iniziare a lavorarci su
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
maresama
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1639
Iscrizione: mercoledì 9 gennaio 2008, 16:00

Re: text con evidenziazione dei secondi rimanenti

Messaggio da maresama »

Come detto non posso riportare il programma
Posso però farne uno con la parte minima che consiste in un widget fatto da una 'label' e da una 'text'
Ovviamente sembrerà una cosa senza senso ma per il problema andrà benissimo.
Domani spero di riuscire a farlo.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: text con evidenziazione dei secondi rimanenti

Messaggio da UbuNuovo »

Cerca "conto alla rovescia in Python"
Per esempio, qua è spiegato riga per riga: https://it.yevgenykafelnikov.com/how-ma ... ram-python
Per il clear ho trovato:

Codice: Seleziona tutto

import os
os.system('cls' if os.name == 'nt' else 'clear')
Salva l'Ucraina! 🇺🇦
Avatar utente
nuzzopippo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1623
Iscrizione: giovedì 12 ottobre 2006, 11:34

Re: text con evidenziazione dei secondi rimanenti

Messaggio da nuzzopippo »

maresama ha scritto:
lunedì 23 agosto 2021, 20:06
...Ritengo che sia molto complicato da fare, ma forse sbaglio...
Di per se, la problematica "potrebbe" essere semplice, sapendo di cosa si sta parlando.
La "selezione" di righe farebbe pensare ad una GUI, è così? E se si, quale framework grafico utilizza (tkinter, wx, qt, etc.)?

[Edit] Ok, non sono stato attento, dal secondo post sembrerebbe una GUI tkinter, cercherò di farti un esempio appena mi riesce, ovviamente in python3 e con le classi (2.7 e programmazione funzionale non hanno senso allo stato)
Fatti non foste a viver come bruti ...
maresama
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1639
Iscrizione: mercoledì 9 gennaio 2008, 16:00

Re: text con evidenziazione dei secondi rimanenti

Messaggio da maresama »

questo è il programma prova (una sintesi del programma che mi è stato dato da modificare)

Codice: Seleziona tutto

def Prova(testo,tempo):
    def Xtempo(xx):                                                     #    tempo scaduto
        root.destroy();
    root = Tk()
    frm0 = Frame(root); frm1 = Frame(root);
    if tempo>0:
       mess2=' tempo: '+str(tempo)+"' ! "
       lb2= Label(frm0 ,text=mess2,justify="left",font=("Roman",9,"bold"),bg='#FCF578',bd=4,relief=RIDGE); lb2.pack(side=RIGHT,fill=Y )
    xtxl='\n'.join(testo)
    Tfix = Text(frm1); Tfix.config(bd=2,pady=2,padx=2)
    Tfix=Text(frm1,bg='#C6F7EE')    
    Tfix.insert(INSERT,xtxl); Tfix.config(state=DISABLED)
    Tfix.pack();  frm0.pack();  frm1.pack()
    if tempo>0: PY['G']['tmp']=root.after(int(abs(tempo)*1000),lambda nn=1:Xtempo('T') )
    root.mainloop()
    return

testo=['aaaaaaaaa','bbbbbbbbbbbbbbbb','ccccccccc','dddddd','eeeeeeeee']
Prova(testo,10)
Il problema, come detto, è far cambiare ogni 1 o 2 secondi, il tempo evidenziato
Avatar utente
nuzzopippo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1623
Iscrizione: giovedì 12 ottobre 2006, 11:34

Re: text con evidenziazione dei secondi rimanenti

Messaggio da nuzzopippo »

maresama ha scritto:
martedì 24 agosto 2021, 8:57
questo è il programma prova (una sintesi del programma che mi è stato dato da modificare) ...
Il problema, come detto, è far cambiare ogni 1 o 2 secondi, il tempo evidenziato
Prova così:

Codice: Seleziona tutto

from tkinter import *

def Prova(testo,tempo):
    my_tmp = tempo
    root = Tk()
    frm0 = Frame(root); frm1 = Frame(root);
    if tempo>0:
       mess2=' tempo: '+str(tempo)+"' ! "
       lb2= Label(frm0 ,text=mess2,justify="left",font=("Roman",9,"bold"),bg='#FCF578',bd=4,relief=RIDGE); lb2.pack(side=RIGHT,fill=Y )
    xtxl='\n'.join(testo)
    Tfix = Text(frm1); Tfix.config(bd=2,pady=2,padx=2)
    Tfix=Text(frm1,bg='#C6F7EE')    
    Tfix.insert(INSERT,xtxl); Tfix.config(state=DISABLED)
    Tfix.pack();  frm0.pack();  frm1.pack()
    #if tempo>0: PY['G']['tmp']=root.after(int(abs(tempo)*1000),lambda nn=1:Xtempo('T') )
    def Xtempo():                                                     #    tempo scaduto
        nonlocal my_tmp
        my_tmp -= 1
        if my_tmp:
            mess=' tempo: '+str(my_tmp)+"' ! "
            lb2.configure(text=mess)
            lb2.update()
            root.after(1000,lambda nn=1:Xtempo())
        else:
            root.destroy();
    if tempo>0:
        #root.after(int(abs(tempo)*1000),lambda nn=1:Xtempo() )
        Xtempo()
    root.mainloop()
    return

testo=['aaaaaaaaa','bbbbbbbbbbbbbbbb','ccccccccc','dddddd','eeeeeeeee']
Prova(testo,10)
Non sarà troppo preciso ma più o meno funzia ;)
Fatti non foste a viver come bruti ...
maresama
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1639
Iscrizione: mercoledì 9 gennaio 2008, 16:00

Re: text con evidenziazione dei secondi rimanenti

Messaggio da maresama »

devo solo cambiare il blocco conteggio.
In effetti il programma prevedeva che passando con il mouse sulla videata il conteggio non abbia piu effetto
Serve all'utente per dargli la possibilità di leggere se ne ha necessità
Penso sia comunque semplice da fare.
Ciao
Avatar utente
Claudio_F
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1463
Iscrizione: lunedì 28 maggio 2012, 18:49
Desktop: Mate/Gnome
Distribuzione: Ubu22.04

Re: text con evidenziazione dei secondi rimanenti

Messaggio da Claudio_F »

maresama ha scritto:
lunedì 23 agosto 2021, 20:06
Vorrei fare in maniera che la 'label' indichi il tempo rimanente , quindi cambiando ogni secondo trascorso. (o ogni due)

Codice: Seleziona tutto

import Tkinter as tk
import time


def avvia():
    puls1.configure(state=tk.DISABLED)
    tempo = time.time()
    count = 10
    lab1.configure(text=count)
    root.after(100, conteggia, count, tempo) 


def conteggia(count, tempo):
    if time.time()-tempo >= 1:
        tempo += 1
        count -= 1
        lab1.configure(text=count)
    if count > 0:
        root.after(100, conteggia, count, tempo) 
    else:
        puls1.configure(state=tk.NORMAL)


root = tk.Tk()
root.resizable(False, False)
puls1 = tk.Button(root, text="START", command=avvia)
puls1.pack(side=tk.LEFT)
lab1 = tk.Label(root, width=10, text="---")
lab1.pack(side=tk.LEFT)
root.mainloop()
maresama
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1639
Iscrizione: mercoledì 9 gennaio 2008, 16:00

Re: text con evidenziazione dei secondi rimanenti

Messaggio da maresama »

grazie a nuzzopippo e Claudio_F (2 maghi!!) tutto risolto!
metto 'risolto'
Avatar utente
trekfan1
Moderatore Globale
Moderatore Globale
Messaggi: 23381
Iscrizione: domenica 21 maggio 2006, 10:51
Desktop: Gnome
Distribuzione: Ubuntu 23.10 e 24.04 (dev)
Sesso: Maschile
Località: Formigine (MO) | Accecante Asceta

Re: risolto - text con evidenziazione dei secondi rimanenti

Messaggio da trekfan1 »

Il [Risolto] si mette tra parentesi quadre esattamente come lo ho scritto io, correggi, grazie :)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 11 ospiti