Форум сайта python.su
0
Как вариант, сохраняю так.
from tkinter import * ... tmpFileName = "111111111.tmp" try: f = open(tmpFileName, 'w') except: return list1_karteg=listbox1.get(0, END) string1 = '' for i in list1_karteg: # Соединяем в строку string1 += str(i) + '\n' string1 = string1.rstrip('\n') f.write(string1) f.close()
tmpFileName = "111111111.tmp" try: f = open(tmpFileName, 'r') # Открывает файл для чтения except: return list1_karteg = f.read() # Читает файл f.close() # Закрыть дескриптор файла list1_karteg = list1_karteg.split('\n') for i in list1_karteg: listbox1.insert(END,i)
Отредактировано nick789 (Фев. 6, 2019 14:36:37)
Офлайн
294
nick789 ой шото вы темните, если действительно
nick789то listbox1.get(0, END) вернет
Сам ListBox :
200 104 0 276 182 64 76 78
316 158 0 448 245 124 132 87
505 211 0 586 274 189 81 63
657 251 0 708 290 249 51 39
809 263 0 892 320 313 83 57
list1_karteg = ('200 104 0 276 182 64 76 78', '316 158 0 448 245 124 132 87', '505 211 0 586 274 189 81 63', '657 251 0 708 290 249 51 39', '809 263 0 892 320 313 83 57',) string1 = '' for i in list1_karteg: string1 += str(i) + '\n' string1 = string1.rstrip('\n') print(string1) >>> 200 104 0 276 182 64 76 78 316 158 0 448 245 124 132 87 505 211 0 586 274 189 81 63 657 251 0 708 290 249 51 39 809 263 0 892 320 313 83 57 >>>
nick789Очевидно что сохраняете вы вовсе не так, и гдето еще присутствует еще один кусок кода котороый пересохраняет поверх вашего сохраненного файла уже по своему.
Как вариант, сохраняю так.
[code python][/code]
Отредактировано PEHDOM (Фев. 6, 2019 15:59:47)
Офлайн
0
Прицепил картинку. Слева файл в редакторе, его время создание. Файл для проверки пересоздавал.
Справа сам ListBox.
В код добавил :
list1_karteg=listbox1.get(0, END) print("prov ", list1_karteg) prov ((807, 219, 0, 949, 323, 65, 142, 104), (992, 323, 0, 1140, 422, 120, 148, 99), (1232, 401, 0, 1310, 484, 176, 78, 83), (1232, 487, 0, 1319, 586, 230, 87, 99))
list1_karteg = f.read() ... for i in list1_karteg: print("type_2 ", type(i)) # type_2 <class 'str'> print("444 ", i) x=i[1:-1] x=x.split(", ") print("x ", x) y = [-1, -1, 0, -1, -1, -1, -1, -1] for k in [0, 1, 2, 3, 4, 5, 6, 7]: y[k]=int(x[k]) print("type_3 ", type(y)) print("555 ", y) listbox1.insert(END,y) type_2 <class 'str'> 444 (1232, 487, 0, 1319, 586, 230, 87, 99) x ['1232', '487', '0', '1319', '586', '230', '87', '99'] type_3 <class 'list'> 555 [1232, 487, 0, 1319, 586, 230, 87, 99]
Отредактировано nick789 (Фев. 7, 2019 09:14:22)
Прикреплённый файлы:
333.jpg (144,7 KБ)
Офлайн
294
nick789Есть конечно, вопрос как у вас листбокс заполняется изначально? что там за данные? есть подозрение что там изначально не строки, а кортежи, в таком случае в самом листбоксе запятые и скобочки не отображаются, видны только цифры\буквы, но когда вы делаете str(кортеж) то оно вам возвращает строку с запятыми и скобочками, которые вы запихиваете в файл как есть с
Руки мне отрывать не надо. Но больше ничего не придумал. Если есть идеи ?
from ast import literal_eval ..... listbox1.insert(END,literal_eval(i))
[code python][/code]
Отредактировано PEHDOM (Фев. 7, 2019 09:51:48)
Офлайн
0
список отправляю в listbox
Офлайн
294
nick789ну так и при чтении из файла нужно строки превращать в список\кортеж перед “отправкой” в листбокс.
список отправляю в listbox
[code python][/code]
Офлайн