Forum
>>
Programmazione Python
>>
GUI
>>
Problema a salvare un file di interi
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
|
Scritto da fabio75 |
2025-10-23 20:07:26 - Problema a salvare un file di interi
|
|
Salve ho il seguente problema: non riesco a creare un file che salvi una lista
di interi. app.values = app.freqa + app.mixa + app.freqb + app.mixb
if not self._model:
name = simpledialog.askstring('Nome modello', 'inserire il nome da assegnare', parent=self)
if not name:
return
self._model = os.path.join(self._cache, name + '.json')
if os.path.exists(self._model):
msg = 'Nome modello già in uso'
messagebox.showerror('Duplicazione', msg, parent=self)
return
for k in self._scales.keys():
sets = []
for i in range(len(self._scalesk)):
sets.append(self._scalesk.get())
app.valuesk = sets
try:
with open(self._model, 'w') as f:
json.dump(app.values, f)
except OSError as e:
msg = 'Errore salvataggio dati mixer:\n\n' + repr(e)
messagebox.showerror('Errore I/O', msg, parent=self)Aiutatemi a capire cos' è andato storto per favore. |
|
|
Scritto da Daniele aka Palmux ![]() |
2025-10-24 11:01:08 - Re: Problema a salvare un file di interi
|
|
Ciao caro, dunque proviamo a vedere qualche punto insieme.
Secondo me qui ci sono 3 cose da verificare prima di tutto: -- Tipi dei dati json.dump vuole roba serializzabile: la tua app.values è davvero lista di int? (prova: print(type(app.values), app.values[:5])) -- Refusi/indici in quel blocco ci sono self._scalesk e app.valuesk: volevi dire self._scalesk e magari salvare in una struttura per chiave? Stai chiamando .get() sul widget giusto o sulla lista? -- Percorso file la cartella self._cache esiste quando apri il file? (se no: os.makedirs(self._cache, exist_ok=True))Se vuoi testare l’I/O isolato (senza Tk/interfaccia), prova solo questo micro-test: import json
open("test.json","w").write(json.dumps([1,2,3]))
Fai sapere se trovi la strada. Cya |
|
|
Scritto da fabio75 |
2025-10-24 21:15:27 - Re: Problema a salvare un file di interi
|
Il test ha funzionato quindi è un problema di chiavi ma non capisco dove.
Ti invio il sorgente completo così capisci. get() è su lista a quanto pare. Sono riuscito a mettere a posto il comando save: def _on_save(self):
app.values = app.freqa + app.mixa + app.freqb + app.mixb
print(app.values)
if not self._model:
name = simpledialog.askstring('Nome modello', 'inserire il nome da assegnare', parent=self)
if not name:
return
self._model = os.path.join(self._cache, name + '.json')
if os.path.exists(self._model):
msg = 'Nome modello già in uso'
messagebox.showerror('Duplicazione', msg, parent=self)
return
for k in self._scales.keys():
sets = []
for i in range(len(self._scalesk)):
sets.append(self._scalesk.get())
#app.valuesk = sets
try:
with open(self._model, 'w') as f:
json.dump(app.values, f)
except OSError as e:
msg = 'Errore salvataggio dati mixer:\n\n' + repr(e)
messagebox.showerror('Errore I/O', msg, parent=self)
return
Dimmi che te ne pare. Ho tolto #app.valuesk = setse mi salva il modello su file. --- Ultima modifica di fabio75 in data 2025-10-24 21:18:06 --- --- Ultima modifica di fabio75 in data 2025-10-24 21:18:50 --- --- Ultima modifica di fabio75 in data 2025-10-26 06:50:49 --- --- Ultima modifica di fabio75 in data 2025-10-26 06:51:04 --- --- Ultima modifica di fabio75 in data 2025-10-26 06:51:51 --- --- Ultima modifica di fabio75 in data 2025-10-26 06:52:14 --- --- Ultima modifica di fabio75 in data 2025-10-26 06:52:34 --- --- Ultima modifica di fabio75 in data 2025-10-26 06:53:09 --- |
|
|
Scritto da fabio75 |
2025-10-26 08:18:22 - Re: Problema a salvare un file di interi
|
|
Mi da errore quì:
def _on_open(self): sets = [] model = select_model(self, self._cache) if not model: return self._model = os.path.join(self._cache, model + '.json') try: with open(self._model) as f: app.values = json.load(f) except OSError as e: msg = 'Errore salvataggio dati mixer:\n\n' + repr(e) messagebox.showerror('Errore I/O', msg, parent=self) return for k in self._scales.keys(): for i in range(len(self._scalesk)): print(app.values) self._scalesk.set(app.values) #mi da errore quì Aiutami a capire che cosa c' è che non va, errore: 1500
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.10/tkinter/__init__.py", line 1921, in __call__
return self.func(*args)
File "/media/fabio/6CA2E3C5A2E3923E/Progetti con eagle/SINTHETIZER/SOFTWARE/PC/prova.py", line 294, in _on_open
self._scalesk.set(app.values)
AttributeError: 'list' object has no attribute 'set'
RISOLTO self._scalesk.set(app.values) Era un problema di indici. --- Ultima modifica di fabio75 in data 2025-10-26 08:25:28 --- --- Ultima modifica di fabio75 in data 2025-10-26 08:26:13 --- |
|
|
Scritto da fabio75 |
2025-10-26 08:56:32 - Re: Problema a salvare un file di interi
|
|
Ora però mi succede una cosa strana con il codice allegato:
Se carico con open() modello1 funziona e mi setta gli sliders, mentre se carico modello2 mi da il seguente errore: Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.10/tkinter/__init__.py", line 1921, in __call__
return self.func(*args)
File "/media/fabio/6CA2E3C5A2E3923E/Progetti con eagle/SINTHETIZER/SOFTWARE/PC/prova.py", line 292, in _on_open
self._scalesk.set(app.values)
File "/usr/lib/python3.10/tkinter/__init__.py", line 3507, in set
self.tk.call(self._w, 'set', value)
_tkinter.TclError: expected floating-point number but got "1500 1500 1500 1500 1500"
infine se carico modello3 mi funziona lo stesso e mi mette gli sliders tutti a 0 come previsto dal file modello3.
Carico i tre modelli più il sorgente. Fammi sapere. |
|
|
Scritto da Daniele aka Palmux ![]() |
2025-10-26 23:24:00 - Re: Problema a salvare un file di interi
|
|
Fabio, nel modello2 app.values contiene più numeri in una stringa (“1500 1500 1500…”), ma .set() accetta un solo float.
Controlla, se devi gestire più slider, fai un ciclo su ciascun valore; se ne hai solo uno, prendi il primo numero della stringa. Prova e fai sapere se era quello il problema. |
Pagina: 1
Esegui il login per scrivere una risposta.

