Yura_LemeshkoПопробовал поковырять ваш код. Кстати попробуйте скопировать свой же код, который вы выложили и заставаить его хотя бы запуститься.
ОТдельное окно я не делал, потому что не знаю как, но сделал добавление и редактирование пунктов используя поле ввода. Пробуйте в него вводить текст и добавлять пункт или выбрав пункт в списке ввделите в поле новый текст и жми “Редактировать”.
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
from tkinter import *
import tkinter.filedialog as fdialog
from tkinter import messagebox
from tkinter.messagebox import *
root = Tk() # Окно
root.geometry('800x450') # Размер окнаа
root.title('Окно оформления') # Заголовок окна
root.resizable(width = False, height = False) # Запрет на изменение размеров окна
label_70 = Label(root, text = 'Замовник: ') # Создаём лейбл
label_70.place(x = 300, y = 10 ) # Задаём координаты лейбла
lbox1 = Listbox(root) # Создаём список (http://effbot.org/tkinterbook/listbox.htm)
lbox1.grid(padx=300, pady = 30) # Создаём сетку (?)
list1=["Пункт 1","Пункт 2","Пункт 3","Пункт 4","Пункт 5","Пункт 6"] # Массив данных для вставки в Listbox
for i in list1: # Цикл вставки в Listbox
lbox1.insert(END,i)
edit1 = Entry(root) # Создаём поле ввода
edit1.grid()
# Функция связанная с выбором в Listbox
def list_to_entry(evt):
value = lbox1.get(lbox1.curselection()) # Получить выделенное
edit1.delete(0, END) # очищает поле ввода
edit1.insert(0,value) # вставляет текст в поле ввода
# Связали (забиндили) событие выбора в Listbox с функцией "list_to_entry"
lbox1.bind('<<ListboxSelect>>',list_to_entry)
#— Начало функции сохранения —————————————————————————————————————
# Функция связанная с кнопкой сохранения
def save_as():
# Если окейнули кнопку в вопросительном диалоге, то
if askyesno('Предупреждение', 'Вы действительно хотите сохранить список?'):
edit1text = ' В поле ввода: ' + str(edit1.get()) # Получаем текст поля ввода, проверяем вывод в консоли
print(edit1text, '\n',
'————————————————————-')
# И чо? Заного ввод?
# list2=[u"Канберра",u"Сидней",u"Мельбурн",u"Аделаида"]
list_1=lbox1.get(0, END) # Получить все пункты списка
# Можно через lbox1.size() получить число пунктов и считывать/записывать по одному, без выделения памяти под кортеж list_1.
sa = fdialog.asksaveasfilename(filetypes = '') # вызов диалога сохранения
f = open(sa, 'a') # Открыть файл, режим добавления
for i in list_1: # Откуда этот спимок? С какого потолка?
f.write(i + '\n') # пишем пункт вставляя перенос строки
f.close() # Закрываем файл после записи
# Список фиг запишешь в фаил, (не удивительно, ведь его (списка) нет (не было))
# пришлось циклично записывать по строкам (можно в памяти соединить строки, но этож накладней)
#~ #— Конец функции сохранения —————————————————————————————————————
# Создаём фрейм
frame_1 = Frame(root, bg = 'red', bd = 2) # Почему red?
frame_1.place(x = 400, y = 360 ) # Координаты размещения фрейма
# Создаём кнопку
button_0 = Button(frame_1, text = 'Зберегти', command = save_as) # Создаём кнопку, связываем с функцией save_as
button_0.pack()
#~ Функция вставки
def added():
text = str(edit1.get()) # Читаем поле ввода
if not (text==''): # Проверяем что текст не пустой, перед вставкой
lbox1.insert(END,text) # Вставляет в конец списка
lbox1.insert(3,'- "' + text + '" - вставлен в поз:3') # Вставляет в позицию 3
button_1 = Button(frame_1, text = '+', command = added) # Создаём кнопку, связываем с функцией save_as
button_1.pack()
#~ Функция Редактирования
def _Item_Edit():
text = str(edit1.get()) # Читаем поле ввода
if not (text==''): # Проверяем что текст не пустой, перед вставкой
#~ print (text)
#~ inx = lbox1.get(ACTIVE) # получаем текст пункта
inx = lbox1.index(ANCHOR) # получаем индекс пункта
if inx > lbox1.size() - 1: # Защита от редактирования пункта без выбора
print ('выберите пункт для начала')
return
lbox1.delete(inx) # удаляем пункт по индексу
lbox1.insert(inx, text + ' (удача ?)') # Вставляет пункт по индексу
edit1.delete(0, END) # очищает поле ввода
button_2 = Button(frame_1, text = 'Редактировать', command = _Item_Edit) # Создаём кнопку, связываем с функцией save_as
button_2.pack()
root.mainloop()