trescon
Profilo di
Nome | trescon |
---|---|
Indirizzo email | python.alby@gmail.com |
Avatar | ![]() |
Messaggi | 217 |
Firma forum | |
------
Alberto |
-
- 2025-05-29 21:01:39
- Re: Calendario grafico con scadenze
- Forum >> Principianti
- Tieni conto che a me interessa visualizzare il codice, il numero della promo, le date, il marchio e il prezzo al pubblico
Dimenticavo... i dati io li lavorerò partendo da un archivio in Sqlire3 creato con il set di dati che hai visto che importerò dopo conversione excel-csv; causa controlli vari da effettuare prima di avere un archivio finito (il quale sarà la somma di tutte le promo arrivate gg x gg nell'anno).
Mediamente poi le righe saranno 50/60000 nel db che però verranno usate per gruppi di date.
Spero di non confondere troppo le idee.
--- Ultima modifica di trescon in data 2025-05-29 21:11:12 ---------
Alberto
-
- 2025-05-29 20:59:35
- Re: Calendario grafico con scadenze
- Forum >> Principianti
- nuzzopippo said @ 2025-05-28 19:08:09:beh, ovviamente il discorso può variare in base ai dati da rappresentare ma di per se è possibile realizzarlo in molti modi.
Uno dei più semplici che mi viene in mente è quello di sfruttare il gestore "grid" per generare un header tipo "codice|descrizione!01|02|..." e quindi sfruttare rowspan nel configurare le celle di codice e descrizione in rapporto al numero di offerte da rappresentare per articolo, mentre ilo metodo colspan permetterebbe di unificare le celle dei giorni in cui ricade una singola offerta. delle label diversamente colorate evidenzierebbero i periodi delle offerte, magari corredati da una brevissima descrizione.
Potrebbe anche utilizzarsi un canvas per "disegnare" le cose ma sarebbe un attimino più articolato.
Volendo potrebbe anche realizzarsi un mix di metodologie ibride.
In ogni caso dovresti decidere "cosa" vuoi per davvero visualizzare e valutare le dimensioni necessarie alla rappresentazione prima ancora di iniziare una implementazione, quantità di dati eccedenti lo schermo comportano approcci diversi da quantità per cui una schermata è sufficiente.
Nel caso Tu ritenga di provare qui qualche bozza proponi un set di dati su cui ragionare che vediamo cosa si riesce ad escogitare.
Ciao
Buonasera, allora ecco un set di dati (chiaramente taroccati) su cui ragionare.
Nelle ultime righe cambiando le date per avere più intersezioni excel non ne ha voluti di lasciarmi il trattino e mi ha messo lo slash.
I campi che io ricevo sono questi, il numero di righe sono decine di migliaia.
Io vorrei poter visualizzare per ogni referenza (codice) tutte le date iniziali e finali della durata di ogni singola promo; come inizio per capire mi va bene anche che ogni promo per lo stesso articolo venga visualizzata con una barra diversa (raggruppando le promo per lo stesso codice su barre vicine tra loro)
Spero di essere stato chiaro.
Lo scopo è vedere la durata della promo su una tavolozza di calendario e vedere se poi per lo stesso articolo alla fine della prima c'è una promo di proseguimento (magari con prezzi diversi)
Capisco che l'argomento a chi non ne ha a che fare possa sembrare "stupido" ma ormai si lavora cosi....
Grazie per la pazienza
------
Alberto
-
- 2025-05-27 14:57:39
- Calendario grafico con scadenze
- Forum >> Principianti
- Bongiorno, sto valutando come creare una visualizzazione a barre orizzontali (con sviluppo orizzontale mensile) che mi visualizza per ogni articolo l'inizio e la fine di una tal promo visualizzando anche le sovrapposizioni di date (magari una inizia prima che finisca l'altra).
Dovrebbe anche mettere in coda sulla stessa "barra" tutte le promozioni con lo stesso codice articolo (perché non vengono tutte comunicate assieme, ne arrivano tutti i giorni).
Quello che chiedo è qualche suggerimento per poter realizzare ciò ; poi cercherò di svilupparlo.
Premetto che i dati vanno estrapolati da file ricevuto in .csv di circa 10/12.000 righe.
Pensavo di creare con canvas lo "specchietto dei 31 gg" con dei rettangoli verticali che poi si intersecano con le barre del prodotti evidenziando la durata, ... potrebbe essere o è una cavolata?
Poi devo valutare come fare in modo che tutte le promo per lo stesso articolo vengano visualizzare sulla stessa barra una di seguito all'altra.
Come si capisce non so bene come partire per non arenarmi subito sulla strada sbagliata.
Avete vogli di darmi qualche dritta.... ?
Grazie------
Alberto
-
- 2025-05-07 21:28:30
- Le classi queste sconosciute
- Forum >> Principianti
- Buonasera, per quanto io ci stia provando ... finisco sempre per litigare quando cerco di usare le classi; porto un esempio di errore che non capisco.
L'errore che mi visualizza l'interprete è:
return self.func(*args)
self.file_modificati.append(self.record_new) # line 118, in converti_data_promo
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\AlbertoAppData\Local\Programs\Python\Python312\Lib\tkinter\__init__.py", line 2425, in __getattr__
return getattr(self.tk, attr)
^^^^^^^^^^^^^^^^^^^^^^
AttributeError: '_tkinter.tkapp' object has no attribute 'file_modificati'
Mi potete chiarire le idee ?
Grazie
class Conversione_date: def __init__(self): self.file_modificati = [] self.file_modificati_giornalieri = [] def converti_data_promo(self): # qui ci sono scariate riche di codice che non utilizzano le variabili "inquisite" if self.file_cambio_data.startswith("promo"): self.file_modificati_giornalieri.append(self.record_new) else: 118 self.file_modificati.append(self.record_new)
------
Alberto
-
- 2024-12-17 08:54:15
- Re: Individuare files dei fonts
- Forum >> Programmazione Python >> Files e Directory
- nuzzopippo said @ 2024-02-15 11:38:29:I miei saluti.
A scopo meramente ludico mi sto studiando la libreria fpdf2, finalizzando alla produzione di moduli tabellari con font e stili scelti dall'utente, la scelta dei fonts avviene per "famiglie" di font selezionate in ambiente tkinter.
Nell'approccio con fpdf2 ho constatato che, necessariamente, deve essere fornito "il file" da utilizzare per la composizione dei testi, specifico per lo stile di testo applicato, essendo la libreria non in grado di operare con la generica fornitura di font-family e style.
Ho, pertanto, iniziato a studiarmi una metodologia per identificare files di font soddisfacenti le scelte utente tra quelli registrati nel sistema, correntemente nel solo linux ma che spero, in seguito, di ampliare anche al mondo windows. Al momento provvedo ad estrarre l'intero set di font rilevati nel sistema tramite fc-list (ho trovato scoraggianti fc-match e fcpatterformat non conoscendo i parametri da applicare di volta in volta) in un subprocess e, quindi, utilizzando il modulo python "fontmeta" per estrarne i metadati e selezionare i file tramite i campi "font_family" e "subfamily"
... certamente l'utilizzo di "fontmeta" non è il massimo, limitando i caratteri gestibili ai soli TrueType ed OpenType ma bene o male può andare, in genere i caratteri di altra codifica (p.e. i Type1) hanno corrispondenze in una delle due tipologie, anche se alcuni, tipo il "Gargi" in esempio sotto... font_family : गार्गी subfamily : गार्गी unique_font_identifier : FontForge : Gargi_1.10v : 12-3-2012 full_font_name : Gargi version : Version 2.0 postscript_name : Gargi ...
non so proprio come intercettarli, dato i caratteri "esotici" utilizzati nel compilare a detti campi.
Comunque, pur ritenendo tutto sommato veniali le problematiche sopra esposte, mi sono imbattuto in alcune casistiche che mi lasciano perplesso circa le metodologie che sto implementando.
La prima : le "famiglie" di font solitamente sono definite con file specifici per i caratteri "normale", "grassetto", "corsivo" e "grassetto-corsivo", detti stili son definiti nel campo "subfamily" MA NON HANNO una indicazione uniforme, tanto meno mi è riuscito di trovare una specifica delle definizioni.
Al momento, ho definito un insieme di variabili globaliNORMAL = ['Regular', 'Normal', 'Roman', 'Book'] BOLD = ['Bold','Gras'] ITALIC = ['Italic', 'Italique', 'Oblique']
di appoggio che però non sono esaustive, alcune delle definizioni trovate non ho neanche saputo ove porle.
Qui viene la prima domanda: qualcuno di Voi conosce e saprebbe indicarmi una specifica esaustiva per gli stili di testo? ... o almeno suggerire delle integrazioni?
Altra problematica è data dai file stessi, sul mio sistema (ubuntu con aggiornamenti dalla versione 16 alla 22) coesistono versioni multiple di file con della stessa "famiglia" e stile, sparsi in varie directory, di sistema o locali all'user, rispondenti ad una ricerca ... certo, posso applicare il primo trovato od anche utilizzare le directory di sistema, anche se in esse sono presenti più file soddisfacenti contemporaneamente i requisiti (tipo i fonts Microsoft)
La seconda domanda è : qualcuno conosce l'argomento e saprebbe indicarmi la documentaione da consultare (sperando non sia troppo "laboriosa") e/o suggerimenti?
Per eventuali interessati, il modulo di lavoro sviluppato al momento (work.py) è il seguente:# -*- coding: utf-8 -*- import subprocess from fontmeta import FontMeta NORMAL = ['Regular', 'Normal', 'Roman', 'Book'] BOLD = ['Bold','Gras'] ITALIC = ['Italic', 'Italique', 'Oblique'] def get_fonts_linux_system() -> list: ''' Estrae i fonts registrati in un sistema linux ''' p = subprocess.check_output('fc-list', stderr=subprocess.STDOUT) fonts_data = p.decode('UTF-8').splitlines() fonts = [] for f in fonts_data: f_name = f.split(':')[0] fonts.append(f_name) fonts.sort() return fonts def get_data_file(fname: str) -> dict: ''' Estrae i metadati di un file TrueType o OpenType ''' data = None try: fm_i = FontMeta(fname) data = fm_i.get_data() except: pass return data def get_from_family(fam: str, style: bool=False, bold: bool=False, italic: bool=False) -> list: ''' Estrae i font registrati con famiglia e stile selezionati ''' fonts = get_fonts_linux_system() founds = [] for f in fonts: fname = f.rstrip('\n') try: fm_i = FontMeta(fname) data = fm_i.get_data() if data['font_family'] == fam: passed = False if style: stl = data['subfamily'] if not bold and not italic: if stl in NORMAL: passed = True elif bold and italic: st = stl.split() if (len(st) == 2 and (st[0] in BOLD or st[0] in ITALIC) and (st[1] in BOLD or st[1] in ITALIC)): passed = True else: if bold: if stl in BOLD: passed = True elif italic: if stl in ITALIC: passed = True else: passed = True if passed: founds.append(f) except: pass return founds
e funziona con la funzione "get_from_family" che richiede l'elenco dei file a "get_fonts_linux_system" per poi processarli singolarmente richiedendo, per ciascuno di essi, i metadati a "get_data_file" per poi valutarne i metadati in base alle opzioni passate quali parametri.
... se qualcuno è interessato alla finestra (tkinter) di test lo faccia sapere che la posto, sono circa 280 righe di codice e non ho ritenuto fosse al momento necessaria.
Grazie dell'attenzione
Ciao Nuzzopioppo, sempre una fonte di approfondimento. Per fortuna che tu sei quello che in una mailing LIST potrebbe essere di “impaccio” …… pensa a chi sta peggio di te che rompi che sarebbe.
Saluti ancora e grazie per tutte le info che ci dai
Alberto------
Alberto
-
- 2024-09-07 14:41:51
- Re: stampare un codice a barre su stampante termica raspberry pi
- Forum >> Programmazione Python >> Files e Directory
- Soggerisco magari una cosa già fatta... e se stampi il Qrcode in pdf e solo poi stampi il file sulla termica ?
Vietato prendermi a parolacce ......------
Alberto
-
- 2024-09-07 14:37:55
- Confrontare date con Sqlite
- Forum >> Programmazione Python >> Database
- Buongiorno a tutti, ogni tanto torno con qualche "problema"; quelle di oggi coinvolge il confronto fra date.
Io ho un archivio che mi viene fornito che ha la date cosi composte: 07/09/2024.
Nelle varie funzioni di confronto x query ho visto esempi solo con date: 2024-09-07
Come potrei fare il confronto con le date fornite ? Dovrei scomporre la data e ricomporla all'americana per poi fare il confronto ?
O sarebbe meglio rilavorare tutto il file .csv convertendo tutte le date e poi in un secondo tempo eseguire la query di confronto ?
Il file di compone di 16 colonne per un minimo di almeno 50.000 righe con possibilità di arrivo alle 70/80.000.
Come potrei ottimizzare al meglio la scrematura per un range di date ?
Grazie
------
Alberto
-
- 2024-04-29 21:35:45
- Re: sqlite3 in rete
- Forum >> Programmazione Python >> Database
- Non riesco a trovare esempi basici che mi itegrino tkinter con after o asyncio o i tread (non ho preclusioni) che mi permettano di usarlo come base di partenza per delle prove per poter capire come funzionano.
E sto cercano non poco....
------
Alberto
-
- 2024-04-29 21:31:45
- Re: sqlite3 in rete
- Forum >> Programmazione Python >> Database
- nuzzopippo said @ 2024-04-29 15:37:53:trescon said @ 2024-04-29 15:12:35:.... ho avuto un'idea ora .... e se io invece di avere un notifica facessi aggiornare la mia interfaccia costantemente ??? ogni 30/40 secondi ?? potrei avere dei blocchi ?? rallentamenti ??
In pratica sostituire l'aggionramento che ora faccio io manualmente con un ciclo/timer ??? A cosa potrei andare in contro ??
Potrei trovarmi a non riuscire ad usare l'interfaccia perchè l'aggiornamento è in corso ??Scusate se intervengo sulla domanda posta a @Daniele.
Le due modalità che ti ho mostrato funzionano entrambe, non Ti vanno bene? Magari è l'uso delle classi che "ostacola"?
In ogni caso, Ti segnalo che puoi anche utilizzare il metodo "after" (ci avevo già accennato) delle finestre tkinter per far si che un metodo/funzione richiami se stesso ogni tot di tempo restando nel ciclo idle di tkinter, con database consistenti o con reti intasate potrebbero succedere dei congelamenti temporanei della gui (motivo per il quale preferisco i thread), comunque potresti provare anche quello, magari Ti va bene.
Quanto su ad integrazione di quanto prima fatto.
Non di meno, pur considerando ottima l'indicazione di @Daniele, la "comunicazione remota" riproporrebbe in ogni caso il problema del refresh della finestra se la view fosse una finestra grafica, entrerebbero comunque in gioco i tempi necessari alla lettura dei dati ed alla comunicazione, temo.
Ciao Nuzzopippo, i tuoi due suggerimento hanno due grossi ostacoli x me (per ora, perchè vorrei superarli) :
1 - come dicevi tu "le classi", le ho usate ma non le conosco bene da potermene "fidare" , sicuramente farei qualcosa che faticherei molto a far funzionare.
2- tu la fai semplice (giust'appunto tu) ma il codice che mi hai scritto anche nel primo esempio, contiene delle sintassi che non conosco e non ho mai visto (che però mi intrigano, perchè vorrei migliorare il mio Python che è molto basico... dovuto al poco tempo disponibile x approfondire e anche ad una vecchiaia che mettersi al pc per imparare qualcosa dopo 9 ore di pc al lavoro e in particolare dopo le 21:30 con il sonno e la stanchezza che incalzano.... non è facile imparare cose nuove)
Quindi avendo esigenza di far funzionare il software cerco , sul subito, di NON rivoluzionare ciò che ho fatto e che funziona ma di integrarlo con quel che mi manca per renderlo operativo il prima possibile.
I foglietti volanti in negozio ci stanno creando "casini" continui.
Questo non vuol dire che non approfondirò i vostri suggerimenti, anzi c'è solo da imparare .... ma mi servono settimane se non mesi per capire.... ; vi chiedo comunque la cortesia di continuare, se possibile, a supportarmi senza pretesa che capisca tutto quello che mi suggerite.
Scusate ma sono molto ignorante in python....
Grazie------
Alberto
-
- 2024-04-29 15:12:35
- Re: sqlite3 in rete
- Forum >> Programmazione Python >> Database
- Daniele aka Palmux said @ 2024-02-29 18:22:04:Beh potresti avere ritardi nella scrittura, ma non credo altri disagi visti gli accessi esigui.
Penserei di implementare un sistema un po' diverso, con il database trasparente per gli utenti. Si accederebbe solo la tua macchina, tramite magari un web-framework alla FastAPI (che è semplicissimo), ricevendo/esponendo/scrivendo le richieste poi dal/al DB. In questo modo potresti gestirti in maniera piuttosto semplice anche le code in entrata e non aver paura di qualche perdita accidentale.
utenti <--> framework <--> database
Però certo, capisco quello che stai pensando, se è una singola riga con 10 valori... beh beh beh disse la pecora, forse la fatica supera il gusto e lascerei il tutto come è adesso.
Ma chissà, vedi tu quanto ti vuoi ancora divertire, sarebbe una cosa non necessaria, ma una scusa per imparare una cosa nuova.
Cya
Ciao Daniele, ho rivisto su tuo suggerimento questo post e sarei d'accordo con te se non fosse per tre motivi :
1- la scrittura, lettura,modifica stato dei messaggi è tutto già funzionante (sono quasi 15 gg che lo testo, solo che quando mi inseriscono un nuovo messaggio mi avvisano perchè io lanci la rilettura del db dalla mia postazione, mi manca solo la notifica !!! :confused
2 - il secondo motivo di disaccordo è che vorrei prima riuscire a fare andare tutto quello che ho fatto prima di imbarcarmi in altre procedure partendo da zero.
3 - la mia macchina non è sempre accesa (se non ci sono è spenta), e quindi il sistema non funzionerebbe.
.... ho avuto un'idea ora .... e se io invece di avere un notifica facessi aggiornare la mia interfaccia costantemente ??? ogni 30/40 secondi ?? potrei avere dei blocchi ?? rallentamenti ??
In pratica sostituire l'aggionramento che ora faccio io manualmente con un ciclo/timer ??? A cosa potrei andare in contro ??
Potrei trovarmi a non riuscire ad usare l'interfaccia perchè l'aggiornamento è in corso ??
Intanto grazie
------
Alberto