nuzzopippo
Profilo di
Nome | nuzzopippo |
---|---|
Indirizzo email | nuzzopippo@gmail.com |
Avatar | |
Messaggi | 174 |
Firma forum | |
Fatti non foste a viver come bruti... |
-
- 2024-05-16 13:15:14
- Re: Negozio
- Forum >> Principianti
-
Lo avevo già visto e risolto i problemi esposti prima della mia risposta, mi chiedevo/chiedo però lo scopo di quel codice, suppongo sia un esercizio, in tal caso Ti avrei spiegato i punti critici e lasciato a te la soluzione ... dato che mi dici di eseguirlo, Ok, eccoti la soluzione, trova i Tuoi perché
class VeganProducts: def __init__(self): self.products = {} # Dictionary for storing products {product name: [quantity, purchase price, sale price]} self.sales = [] # List for recording sales [product name, quantity sold] def add_product(self, name, quantity, purchase_price, selling_price): if quantity < 0 or purchase_price < 0 or selling_price < 0: raise ValueError("The quantity, purchase price and selling price must be positive.") if name in self.products: self.products[name][0] += quantity else: self.products[name] = [quantity, purchase_price, selling_price] def list_products(self): print("Products available in the shop:") for name, details in self.products.items(): print(f"{name} {details[0]} €{details[2]}") def register_sale(self): response = 'Y' vendita = [] while response.upper() == 'Y': name = input("Enter the product name: ") quantity = int(input("Enter the available quantity: ")) if name in self.products: if self.products[name][0] >= quantity: self.products[name][0] -= quantity vendita.append([name, quantity]) else: print(f'Quantità eccessiva, disponibile {self.products[name][0]}') else: print(f'{name} : prodotto non disponibile.') response = input("Do you want to add a new product to sell? \n Press Y or N: ") print('VENDITA REGISTRATA') total_price = 0 for name, quantity in vendita: total_price += self.products[name][2] * quantity print(f"{quantity} X {name} : € {self.products[name][2]}") print(f"Totale € {total_price}") self.sales += vendita def show_profits(self): gross_profits = 0 net_profits = 0 for sale in self.sales: selling_price = self.products[sale[0]][2] costo = self.products[sale[0]][1] gross_profits += selling_price * sale[1] net_profits += selling_price * sale[1] - costo * sale[1] print(f"Gross profits: {gross_profits}") print(f"Net profits:: {net_profits}") def show_help_menu(self): print("Available commands:") print("1. Add product") print("2. Product list") print("3. Record sale") print("4. Help") print("5. Profits") print("0. Close") def exit(self): print("Exiting the program.") exit() def main(): store = VeganProducts() store.show_help_menu() while True: choice = input("Enter the number corresponding to the desired action: ") if choice == "1": try: name = input("Enter the product name: ") quantity = int(input("Enter the available quantity: ")) purchase_price = float(input("Enter the purchase price: ")) selling_price = float(input("Enter the sales price: ")) store.add_product(name, quantity, purchase_price, selling_price) except ValueError as e: print(e) elif choice == "2": store.list_products() elif choice == "3": store.register_sale() elif choice == "4": store.show_help_menu() elif choice == "5": store.show_profits() elif choice == "0": break else: print("Invalid choice. Try again.") if __name__ == "__main__": main()
Fatti non foste a viver come bruti...
-
- 2024-05-16 12:00:30
- Re: Negozio
- Forum >> Principianti
- L'output da Te esposto NON PUÒ essere prodotto dal codice che hai allegato, quindi, che cosa stai effettivamente chiedendo?Fatti non foste a viver come bruti...
-
- 2024-05-13 15:37:19
- Re: Utilizzo Socket
- Forum >> Principianti
-
Si, ho visto, ho visto anche che hai modificato alcune cose che ...
Il problema è l'inizializzazione, lascia invariato pkt_gui_rcs_support
in pkt_gui_rcs commenta queste righe come esposto:
'''global textB1 global textB2 textB1 = "Bottone 1" textB2 = "Bottone 2" '''
Alla fine della definizione della finestra inserisci quello che ho aggiunto sotto
... self.pub.subscribe('LISTENERS', self.obs) top.after_idle(self.update_controls) def update_controls(self): self.POSTAZIONE.configure(text=pkt_gui_rcs_support.PST) self.RadiobuttonRIT.configure(text=pkt_gui_rcs_support.textB2) # Radio Button n.2 self.RadiobuttonNP.configure(text=pkt_gui_rcs_support.textB1) def obs(self, message: list) -> None: ...
commenta nel codice della finestra le istruzioni
#self.RadiobuttonNP.configure(text=textB1) #Radio Button n.1 #self.RadiobuttonRIT.configure(text=textB2) # Radio Button n.2
e funzionerà
Purtroppo, bisogna comprendere un po' le cose, in fase di inizializzazione non si può riferire a variabili di un altro modulo, solo ad inizializzazione completata può essere fatto, la istruzione "after_idle" serve a far eseguire del codice terminato un ciclo di esecuzione della finestra (e quindi ad inizializzazione conclusa).
Fai sapere
Fatti non foste a viver come bruti...
-
- 2024-05-13 14:58:53
- Re: Utilizzo Socket
- Forum >> Principianti
- Pietro Bruno Lancerotto said @ 2024-05-13 13:28:32:nuzzopippo said @ 2024-05-13 08:40:33:Evitiamo per il momento di affrontare l'intera strutturazione (3 file? prima erano 2)
Il terzo è utility.py che hai realizzato Tu
C'è poi il quarto, e cioè Terminale.ini
Credo sia opportuno aggiornare il tutto allo status attuale per cui allego lo zip con tutto il malloppo
...Già, avevo dimenticato utility ...
In ogni caso, il problema posto è stato superato?
Fatti non foste a viver come bruti...
-
- 2024-05-13 08:40:33
- Re: Utilizzo Socket
- Forum >> Principianti
- Evitiamo per il momento di affrontare l'intera strutturazione (3 file? prima erano 2)
Dal codice inserito su, vedo che nel momento in cui instanzi "_w1" le variabili globali che vorresti utilizzare nella costruzione della gui non sono neanche dichiarate ... purtroppo, la strutturazione del codice è MOLTO importante, credo sia questa l'origine del problema, prova a strutturare come lo stralcio sotto... terminale = None root = None PST = '' textB1 = '' textB2 = '' mexB1 = '' mexB2 = '' #**************************************** def initialize(): global PST global textB1 global textB2 global mexB1 global mexB2 f = open("Terminale.ini", "r") serverName = (f.readline()).strip("\n") serverPort = int(f.readline()) PST = (f.readline()).strip("\n") textB1 = (f.readline()).strip("\n") textB2 = (f.readline()).strip("\n") mexB1 = (f.readline()).strip("\n") mexB2 = (f.readline()).strip("\n") f.close() def main(*args): '''Main entry point for the application.''' initialize() global root root = tk.Tk() #root.protocol( 'WM_DELETE_WINDOW' , root.destroy) - sostituita in PAGINA # Creates a toplevel widget. global _top1, _w1 _top1 = root _w1 = pkt_gui_rcs.PAGINA(_top1) #global PST #PST = "GENERICI" global terminale serverName = "localhost" ...
certezza non ho ma penso che il problema lamentato dovrebbe risolversi.
Inoltre, data l'inizializzazione di PST la ridefinizione dello stesso in "main" dovrebbe essere ridondante, perciò la ho commentata.
Fai sapere
P.S. : impara ad utilizzare il tasto "code" (<>) nell'editor dei post, essere chiari è importantissimo.
edit: corretto uno strafalcione
Ciao
--- Ultima modifica di nuzzopippo in data 2024-05-13 08:44:18 ---Fatti non foste a viver come bruti...
-
- 2024-05-12 11:46:18
- Re: Utilizzo Socket
- Forum >> Principianti
- Pietro Bruno Lancerotto said @ 2024-05-12 10:49:53:...
Ovviamente sono a chiederTi in che modo traslare le due variabili textB1 e textB2 da un modulo all'altroSinceramente, non ho ben capito cosa hai fatto, la natura del "problema" e "quando" il problema si presenta, leggere il traceback non sarebbe male.
Comunque, riepiloghiamo il certo : hai bisogno di cambiare il testo del controllo ptk_gui_rcs.PAGINA.RadiobuttonNP
Per poter cambiare il testo di un controllo, l'istanza alla classe PAGINA deve già essere inizializzata, così come devono già essere già caricate in memoria le variabili contenenti il testo, indipendentemente da dove siano collocate, domanda : la variazione del testo deve avvenire a oggetti già completamente inizializzati od in fase di caricamento?
Dubbio corollario, essendo il target un radiobutton, che senso ha cambiare il testo? è il "value" ciò che entrerebbe realmente in gioco
Poi, c'è da considerare il contesto in cui avviene la modifica, è in ptk_gui_rcs o in ptk_gui_rcs_support?
Chiarisci tali dettagli, poi vediamo che si fa.
Ciao
Fatti non foste a viver come bruti...
-
- 2024-05-10 08:24:22
- Re: Valori sui markers in matplotlib
- Forum >> Programmazione Python >> Calcolo scientifico
-
Se volessimo trovare un difetto a matplotlib potremmo dire che è "troppa", ci si perde nella abbondanza di funzioni che presenta e nelle correlazioni relative.
Credo che il metodo più probabilmente adatto a ciò che chiedi sia "matplotlib.pyplot.annotate", ma ne esistono altri, anche specializzati per tipi di grafico ... alcuni esempi d'uso di annotate da una discussione su stackoverflow
Fatti non foste a viver come bruti...
-
- 2024-05-09 15:56:05
- Re: stampare un codice a barre su stampante termica raspberry pi
- Forum >> Programmazione Python >> Files e Directory
-
Hai letto/provato il capitolo "Printer implementation"?
... Purtroppo, in materia non posso eseguire test per farmene un'idea personalmente, ho rinunciato alle stampanti casalinghe anni fa (disgustato dai chip che le "scaricano") e, se proprio ne ho bisogno, ricorro alle cartolerie.
Per altro, i processi di stampa sono fortemente legati ai vari sistemi operativi ed ai driver proprietari, neanche io ho trovato nulla di attendibile gestibile direttamente in python, a quanto ne so bisognerebbe interfacciarsi ai processi del sistema operativo oppure ricorrere alle librerie grafiche che ho prima citato, od anche crearsi un pdf dalle opportune caratteristiche e poi lanciare la stampa con i processi di sistema.
Fatti non foste a viver come bruti...
-
- 2024-05-09 09:59:14
- Re: stampare un codice a barre su stampante termica raspberry pi
- Forum >> Programmazione Python >> Files e Directory
-
Non ho nessuna esperienza tanto di bar-code quanto di stampa diretta con python, so che wx w qt forniscono interfacce per la stampante ma finisce li.
In rete go trovato la documentazione di "python-escpos" che, forse, potrebbe esserTi utile, la segnalo in attesa di interventi migliori
Fatti non foste a viver come bruti...
-
- 2024-05-06 14:02:22
- Re: matplotlib grafico con sfumatura
- Forum >> Programmazione Python >> GUI
- Gabbo said @ 2024-05-06 12:28:50:Bastava un semplice comando (layout='constrained') per risolvere il problema delle scritte.
Rabe da matti, non sai quanto tempo che ho perso....beh ... dato che "Figure" serve per sostituire plot per generare una immagine nel canvas, io ho semplicemente immaginato che "dovesse" avere i metodi per controllare la rappresentazione grafica e, quindi, letta la Tua domanda, sono andato direttamente documentazione relativa, risolvendo in un paio di minuti ...
Una chicca : prova a commentare e de-commentare l'istruzioneag.fill_between(Xv , Yv, facecolor=col, alpha=0.2 ) #thistle
vedrai una leggera differenza nella sfumatura ... penso stia meglio con questa istruzione attiva, ma è interessante imho
Edit: mi è venuto in mente adesso, tempo fa su un sito aperto solo a me scrissi un appunto, giusto a mia promemoria, circa tkinter e matplotlib.
La storia delle sfumature verticali trattata è interessante e l'esempio da Te proposto è decisamente carino, mi piacerebbe approfondire un po' l'argomento per poi inserirlo do seguito, giusto per tenerne traccia, tra un anno chi se ne ricorda più ... potrei utilizzare il Tuo esempio?
--- Ultima modifica di nuzzopippo in data 2024-05-06 14:28:01 ---Fatti non foste a viver come bruti...