1. “Заказчик” не работают кнопки редактирования, выскакивают предупреждения.
2. В блоке “Общий вид работ” кнопки работают, но надо что бы, они сохраняли и редактировали по разрядах “КВР”, “Монтаж, п/н” и т. д.
# -*- coding: UTF-8 -*-
from tkinter import *
import tkinter.filedialog as fdialog
from tkinter import messagebox
from tkinter.messagebox import *
root = Tk()
root.geometry('800x550')
root.title('Окно оформления')
root.resizable(width = False, height = False)
#####
##### Первый ряд #####
label_300 = Label(root, text = u"Загальний вид робiт:")
label_300.place(x = 70, y = 260 )
#######
edit2 = Entry(root) # надо было тут edit ставить
def box_1():
global list1
def read_file_to_lbox():
try:
f = open('lbox.txt', 'r') # Открывает файл для чтения
except:
# Генерируем пункты для примера (вариант 2)
list1=["Генеририруем","Тестовый","Если","не найден","файл","lbox.txt"] # Массив данных для вставки в Listbox
for i in list1: # Цикл вставки в Listbox
lbox1.insert(END,i)
return # Вылет, если не удалось открыть файл
list1 = f.read() # Читает файл
f.close() # Закрыть дескриптор файла
list1 = list1.split('\n') # делит строку указаным разделителем, возвращая список
for i in list1: # Цикл вставки в Listbox
lbox1.insert(END,i)
# ——————————————————————————————————————
# Функция связанная с кнопкой сохранения
def save_lbox_to_q_file():
list_1=lbox1.get(0, END) # Получить все пункты списка
string = ''
for i in list_1: # Соединяем в строку
string += i + '\n'
string = string.rstrip('\n') # справа обрезает все символы, указанные в перечислении
# sa = fdialog.asksaveasfilename(filetypes = [("Текстовые файлы", "*.txt")]) # вызов диалога сохранения
try:
f = open('lbox.txt', 'w') # Открывает файл для чтения
# f = open(sa, 'w') # Открыть файл, режим добавления
except:
# print("Could not open File: ")
# print(sys.exc_info()[1])
return # Вылет, если не удалось открыть файл
f.write(string) # пишем строку пунктов в файл
f.close() # Закрываем файл после записи
#root.quit()
# ——————————————————————————————————————
# Функция связанная с выбором в Listbox
def lbox_item_to_q_entry(evt):
inx = lbox1.index(ANCHOR) # получаем индекс пункта
if inx > lbox1.size() - 1: # Защита от применения действий к пункту без его выбора, список может быть пуст
# print ('выберите пункт для начала')
return
value = lbox1.get(inx) # Получить выделенное
edit2.delete(0, END) # очищает поле ввода
edit2.insert(0,value) # вставляет текст в поле ввода
# ——————————————————————————————————————
# Функция вставки
def lbox_added_q_item():
text = str(edit1.get()) # Читаем поле ввода
if not (text==''): # Проверяем что текст не пустой, перед вставкой
lbox1.insert(END,text) # Вставляет в конец списка
edit2.delete(0, END) # очищает поле ввода
# lbox1.insert(3,'- "' + text + '" - вставлен в поз:3') # Вставляет в позицию 3
else:
showwarning('Предупреждение', 'Укажите текст добавляемого пункта')
# ——————————————————————————————————————
# Функция редактирования
def lbox_edit_q_item():
text = str(edit1.get()) # Читаем поле ввода
if not (text==''): # Проверяем что текст не пустой, перед вставкой
# print (text)
# inx = lbox1.get(ACTIVE) # получаем текст пункта
inx = lbox1.index(ANCHOR) # получаем индекс пункта
if inx > lbox1.size() - 1: # Защита от редактирования пункта без выбора
showwarning('Предупреждение', 'Выберите пункт для редактирования')
# print ('выберите пункт для начала')
return
lbox1.delete(inx) # удаляем пункт по индексу
lbox1.insert(inx, text) # Вставляет пункт по индексу
# lbox1.insert(inx, text + ' (удача ?)') # Для визуального теста
edit2.delete(0, END) # очищает поле ввода
else:
showwarning('Предупреждение', 'Укажите новый текст пункта')
# ——————————————————————————————————————
# Функция удаления
#def lbox_delete_item():
#inx = lbox1.index(ANCHOR) # получаем индекс пункта
#if inx > lbox1.size() - 1: # Защита от редактирования пункта без выбора
#showwarning('Предупреждение', 'Выберите пункт для удаления')
#return
#lbox1.delete(inx) # удаляет пункт по индексу
# label_1 = Label(root, text = 'Замовник: ') # Создаём лейбл
# label_1.place(x = 300, y = 10) # Задаём координаты лейбла
lbox1 = Listbox(root, width = 30) # Создаём список (, selectmode=MULTIPLE) (http://effbot.org/tkinterbook/listbox.htm)
lbox1.place(x=200, y = 280) # Добавляем в слот grid с отступами
read_file_to_lbox()
#edit2 = Entry(root, width = 30) # Создаём поле ввода
edit2.place(x = 300, y = 250) # Добавляем в слот grid
# Связали (забиндили) событие выбора в Listbox с функцией "list_to_entry"
lbox1.bind('<<ListboxSelect>>', lbox_item_to_q_entry)
# Создаём кнопки и вязываем с функциями
button_1 = Button(root, text = '+', command = lbox_added_q_item)
button_1.pack()
button_1.place(x = 300, y = 440) # Если кнопку делаем в root, то координируем
#button_2 = Button(root, text = '-', command = lbox_delete_item)
#button_2.pack()
#button_2.place(x = 50, y = 250) # Если кнопку делаем в root, то координируем
button_3 = Button(root, text = 'Правка', command = lbox_edit_q_item)
button_3.pack()
button_3.place(x = 390, y = 440) # Если кнопку делаем в root, то координируем
button_4 = Button(root, text = 'Сохранить', command = save_lbox_to_q_file)
button_4.pack()
button_4.place(x =320, y = 440) # Если кнопку делаем в root, то координируем
#####
edit2 = Entry(root)
def box_2():
global list2
def read_file_to_lbox():
try:
f = open('lbox.txt', 'r') # Открывает файл для чтения
except:
# Генерируем пункты для примера (вариант 2)
list2=["Генеририруем","Тестовый","Если","не найден","файл","lbox.txt"] # Массив данных для вставки в Listbox
for i in list1: # Цикл вставки в Listbox
lbox1.insert(END,i)
return # Вылет, если не удалось открыть файл
list2 = f.read() # Читает файл
f.close() # Закрыть дескриптор файла
list2 = list2.split('\n') # делит строку указаным разделителем, возвращая список
for i in list2: # Цикл вставки в Listbox
lbox1.insert(END,i)
# ——————————————————————————————————————
# Функция связанная с кнопкой сохранения
def save_lbox_to_q_file():
list2=lbox1.get(0, END) # Получить все пункты списка
string = ''
for i in list2: # Соединяем в строку
string += i + '\n'
string = string.rstrip('\n') # справа обрезает все символы, указанные в перечислении
# sa = fdialog.asksaveasfilename(filetypes = [("Текстовые файлы", "*.txt")]) # вызов диалога сохранения
try:
f = open('lbox.txt', 'w') # Открывает файл для чтения
# f = open(sa, 'w') # Открыть файл, режим добавления
except:
# print("Could not open File: ")
# print(sys.exc_info()[1])
return # Вылет, если не удалось открыть файл
f.write(string) # пишем строку пунктов в файл
f.close() # Закрываем файл после записи
#root.quit()
# ——————————————————————————————————————
# Функция связанная с выбором в Listbox
def lbox_item_to_q_entry(evt):
inx = lbox1.index(ANCHOR) # получаем индекс пункта
if inx > lbox1.size() - 1: # Защита от применения действий к пункту без его выбора, список может быть пуст
# print ('выберите пункт для начала')
return
value = lbox1.get(inx) # Получить выделенное
edit2.delete(0, END) # очищает поле ввода
edit2.insert(0,value) # вставляет текст в поле ввода
# ——————————————————————————————————————
# Функция вставки
def lbox_added_q_item():
text = str(edit2.get()) # Читаем поле ввода
if not (text==''): # Проверяем что текст не пустой, перед вставкой
lbox1.insert(END,text) # Вставляет в конец списка
edit2.delete(0, END) # очищает поле ввода
# lbox1.insert(3,'- "' + text + '" - вставлен в поз:3') # Вставляет в позицию 3
else:
showwarning('Предупреждение', 'Укажите текст добавляемого пункта')
# ——————————————————————————————————————
# Функция редактирования
def lbox_edit_q_item():
text = str(edit2.get()) # Читаем поле ввода
if not (text==''): # Проверяем что текст не пустой, перед вставкой
# print (text)
# inx = lbox1.get(ACTIVE) # получаем текст пункта
inx = lbox1.index(ANCHOR) # получаем индекс пункта
if inx > lbox1.size() - 1: # Защита от редактирования пункта без выбора
showwarning('Предупреждение', 'Выберите пункт для редактирования')
# print ('выберите пункт для начала')
return
lbox1.delete(inx) # удаляем пункт по индексу
lbox1.insert(inx, text) # Вставляет пункт по индексу
# lbox1.insert(inx, text + ' (удача ?)') # Для визуального теста
edit2.delete(0, END) # очищает поле ввода
else:
showwarning('Предупреждение', 'Укажите новый текст пункта')
# ——————————————————————————————————————
# Функция удаления
#def lbox_delete_item():
#inx = lbox1.index(ANCHOR) # получаем индекс пункта
#if inx > lbox1.size() - 1: # Защита от редактирования пункта без выбора
#showwarning('Предупреждение', 'Выберите пункт для удаления')
#return
#lbox1.delete(inx) # удаляет пункт по индексу
# label_1 = Label(root, text = 'Замовник: ') # Создаём лейбл
# label_1.place(x = 300, y = 10) # Задаём координаты лейбла
lbox1 = Listbox(root, width = 30) # Создаём список (, selectmode=MULTIPLE) (http://effbot.org/tkinterbook/listbox.htm)
lbox1.place(x=200, y = 280) # Добавляем в слот grid с отступами
read_file_to_lbox()
#edit2 = Entry(root, width = 30) # Создаём поле ввода
edit2.place(x = 300, y = 250) # Добавляем в слот grid
# Связали (забиндили) событие выбора в Listbox с функцией "list_to_entry"
lbox1.bind('<<ListboxSelect>>', lbox_item_to_q_entry)
# Создаём кнопки и вязываем с функциями
button_6 = Button(root, text = '+', command = lbox_added_q_item)
button_6.pack()
button_6.place(x = 300, y = 440) # Если кнопку делаем в root, то координируем
#button_2 = Button(root, text = '-', command = lbox_delete_item)
#button_2.pack()
#button_2.place(x = 50, y = 250) # Если кнопку делаем в root, то координируем
button_7 = Button(root, text = 'Правка', command = lbox_edit_q_item)
button_7.pack()
button_7.place(x = 390, y = 440) # Если кнопку делаем в root, то координируем
button_8 = Button(root, text = 'Сохранить', command = save_lbox_to_q_file)
button_8.pack()
button_8.place(x =320, y = 440) # Если кнопку делаем в root, то координируем
#####
edit2 = Entry(root)
def box_3():
global list3
def read_file_to_lbox():
try:
f = open('lbox.txt', 'r') # Открывает файл для чтения
except:
# Генерируем пункты для примера (вариант 2)
list3=["Генеририруем","Тестовый","Если","не найден","файл","lbox.txt"] # Массив данных для вставки в Listbox
for i in list3: # Цикл вставки в Listbox
lbox1.insert(END,i)
return # Вылет, если не удалось открыть файл
list3 = f.read() # Читает файл
f.close() # Закрыть дескриптор файла
list3 = list3.split('\n') # делит строку указаным разделителем, возвращая список
for i in list3: # Цикл вставки в Listbox
lbox1.insert(END,i)
# ——————————————————————————————————————
# Функция связанная с кнопкой сохранения
def save_lbox_to_q_file():
list3=lbox1.get(0, END) # Получить все пункты списка
string = ''
for i in list3: # Соединяем в строку
string += i + '\n'
string = string.rstrip('\n') # справа обрезает все символы, указанные в перечислении
# sa = fdialog.asksaveasfilename(filetypes = [("Текстовые файлы", "*.txt")]) # вызов диалога сохранения
try:
f = open('lbox.txt', 'w') # Открывает файл для чтения
# f = open(sa, 'w') # Открыть файл, режим добавления
except:
# print("Could not open File: ")
# print(sys.exc_info()[1])
return # Вылет, если не удалось открыть файл
f.write(string) # пишем строку пунктов в файл
f.close() # Закрываем файл после записи
#root.quit()
# ——————————————————————————————————————
# Функция связанная с выбором в Listbox
def lbox_item_to_q_entry(evt):
inx = lbox1.index(ANCHOR) # получаем индекс пункта
if inx > lbox1.size() - 1: # Защита от применения действий к пункту без его выбора, список может быть пуст
# print ('выберите пункт для начала')
return
value = lbox1.get(inx) # Получить выделенное
edit2.delete(0, END) # очищает поле ввода
edit2.insert(0,value) # вставляет текст в поле ввода
# ——————————————————————————————————————
# Функция вставки
def lbox_added_q_item():
text = str(edit2.get()) # Читаем поле ввода
if not (text==''): # Проверяем что текст не пустой, перед вставкой
lbox1.insert(END,text) # Вставляет в конец списка
edit2.delete(0, END) # очищает поле ввода
# lbox1.insert(3,'- "' + text + '" - вставлен в поз:3') # Вставляет в позицию 3
else:
showwarning('Предупреждение', 'Укажите текст добавляемого пункта')
# ——————————————————————————————————————
# Функция редактирования
def lbox_edit_q_item():
text = str(edit2.get()) # Читаем поле ввода
if not (text==''): # Проверяем что текст не пустой, перед вставкой
# print (text)
# inx = lbox1.get(ACTIVE) # получаем текст пункта
inx = lbox1.index(ANCHOR) # получаем индекс пункта
if inx > lbox1.size() - 1: # Защита от редактирования пункта без выбора
showwarning('Предупреждение', 'Выберите пункт для редактирования')
# print ('выберите пункт для начала')
return
lbox1.delete(inx) # удаляем пункт по индексу
lbox1.insert(inx, text) # Вставляет пункт по индексу
# lbox1.insert(inx, text + ' (удача ?)') # Для визуального теста
edit2.delete(0, END) # очищает поле ввода
else:
showwarning('Предупреждение', 'Укажите новый текст пункта')
# ——————————————————————————————————————
# Функция удаления
#def lbox_delete_item():
#inx = lbox1.index(ANCHOR) # получаем индекс пункта
#if inx > lbox1.size() - 1: # Защита от редактирования пункта без выбора
#showwarning('Предупреждение', 'Выберите пункт для удаления')
#return
#lbox1.delete(inx) # удаляет пункт по индексу
# label_1 = Label(root, text = 'Замовник: ') # Создаём лейбл
# label_1.place(x = 300, y = 10) # Задаём координаты лейбла
lbox1 = Listbox(root, width = 30) # Создаём список (, selectmode=MULTIPLE) (http://effbot.org/tkinterbook/listbox.htm)
lbox1.place(x=200, y = 280) # Добавляем в слот grid с отступами
read_file_to_lbox()
#edit2 = Entry(root, width = 30) # Создаём поле ввода
edit2.place(x = 300, y = 250) # Добавляем в слот grid
# Связали (забиндили) событие выбора в Listbox с функцией "list_to_entry"
lbox1.bind('<<ListboxSelect>>', lbox_item_to_q_entry)
# Создаём кнопки и вязываем с функциями
button_6 = Button(root, text = '+', command = lbox_added_q_item)
button_6.pack()
button_6.place(x = 300, y = 440) # Если кнопку делаем в root, то координируем
#button_2 = Button(root, text = '-', command = lbox_delete_item)
#button_2.pack()
#button_2.place(x = 50, y = 250) # Если кнопку делаем в root, то координируем
button_7 = Button(root, text = 'Правка', command = lbox_edit_q_item)
button_7.pack()
button_7.place(x = 390, y = 440) # Если кнопку делаем в root, то координируем
button_8 = Button(root, text = 'Сохранить', command = save_lbox_to_q_file)
button_8.pack()
button_8.place(x =320, y = 440) # Если кнопку делаем в root, то координируем
#####
edit2 = Entry(root)
def box_4():
global list_4
def read_file_to_lbox():
try:
f = open('lbox.txt', 'r') # Открывает файл для чтения
except:
# Генерируем пункты для примера (вариант 2)
list_4=["Генеририруем","Тестовый","Если","не найден","файл","lbox.txt"] # Массив данных для вставки в Listbox
for i in list_4: # Цикл вставки в Listbox
lbox1.insert(END,i)
return # Вылет, если не удалось открыть файл
list_4 = f.read() # Читает файл
f.close() # Закрыть дескриптор файла
list_4 = list_4.split('\n') # делит строку указаным разделителем, возвращая список
for i in list_4: # Цикл вставки в Listbox
lbox1.insert(END,i)
# ——————————————————————————————————————
# Функция связанная с кнопкой сохранения
def save_lbox_to_q_file():
list_4=lbox1.get(0, END) # Получить все пункты списка
string = ''
for i in list1: # Соединяем в строку
string += i + '\n'
string = string.rstrip('\n') # справа обрезает все символы, указанные в перечислении
# sa = fdialog.asksaveasfilename(filetypes = [("Текстовые файлы", "*.txt")]) # вызов диалога сохранения
try:
f = open('lbox.txt', 'w') # Открывает файл для чтения
# f = open(sa, 'w') # Открыть файл, режим добавления
except:
# print("Could not open File: ")
# print(sys.exc_info()[1])
return # Вылет, если не удалось открыть файл
f.write(string) # пишем строку пунктов в файл
f.close() # Закрываем файл после записи
#root.quit()
# ——————————————————————————————————————
# Функция связанная с выбором в Listbox
def lbox_item_to_q_entry(evt):
inx = lbox1.index(ANCHOR) # получаем индекс пункта
if inx > lbox1.size() - 1: # Защита от применения действий к пункту без его выбора, список может быть пуст
# print ('выберите пункт для начала')
return
value = lbox1.get(inx) # Получить выделенное
edit2.delete(0, END) # очищает поле ввода
edit2.insert(0,value) # вставляет текст в поле ввода
# ——————————————————————————————————————
# Функция вставки
def lbox_added_q_item():
text = str(edit2.get()) # Читаем поле ввода
if not (text==''): # Проверяем что текст не пустой, перед вставкой
lbox1.insert(END,text) # Вставляет в конец списка
edit2.delete(0, END) # очищает поле ввода
# lbox1.insert(3,'- "' + text + '" - вставлен в поз:3') # Вставляет в позицию 3
else:
showwarning('Предупреждение', 'Укажите текст добавляемого пункта')
# ——————————————————————————————————————
# Функция редактирования
def lbox_edit_q_item():
text = str(edit2.get()) # Читаем поле ввода
if not (text==''): # Проверяем что текст не пустой, перед вставкой
# print (text)
# inx = lbox1.get(ACTIVE) # получаем текст пункта
inx = lbox1.index(ANCHOR) # получаем индекс пункта
if inx > lbox1.size() - 1: # Защита от редактирования пункта без выбора
showwarning('Предупреждение', 'Выберите пункт для редактирования')
# print ('выберите пункт для начала')
return
lbox1.delete(inx) # удаляем пункт по индексу
lbox1.insert(inx, text) # Вставляет пункт по индексу
# lbox1.insert(inx, text + ' (удача ?)') # Для визуального теста
edit1.delete(0, END) # очищает поле ввода
else:
showwarning('Предупреждение', 'Укажите новый текст пункта')
# ——————————————————————————————————————
# Функция удаления
#def lbox_delete_item():
#inx = lbox1.index(ANCHOR) # получаем индекс пункта
#if inx > lbox1.size() - 1: # Защита от редактирования пункта без выбора
#showwarning('Предупреждение', 'Выберите пункт для удаления')
#return
#lbox1.delete(inx) # удаляет пункт по индексу
# label_1 = Label(root, text = 'Замовник: ') # Создаём лейбл
# label_1.place(x = 300, y = 10) # Задаём координаты лейбла
lbox1 = Listbox(root, width = 30) # Создаём список (, selectmode=MULTIPLE) (http://effbot.org/tkinterbook/listbox.htm)
lbox1.place(x=200, y = 280) # Добавляем в слот grid с отступами
read_file_to_lbox()
#edit2 = Entry(root, width = 30) # Создаём поле ввода
edit2.place(x = 300, y = 250) # Добавляем в слот grid
# Связали (забиндили) событие выбора в Listbox с функцией "list_to_entry"
lbox1.bind('<<ListboxSelect>>', lbox_item_to_q_entry)
# Создаём кнопки и вязываем с функциями
button_6 = Button(root, text = '+', command = lbox_added_q_item)
button_6.pack()
button_6.place(x = 300, y = 440) # Если кнопку делаем в root, то координируем
#button_2 = Button(root, text = '-', command = lbox_delete_item)
#button_2.pack()
#button_2.place(x = 50, y = 250) # Если кнопку делаем в root, то координируем
button_7 = Button(root, text = 'Правка', command = lbox_edit_q_item)
button_7.pack()
button_7.place(x = 390, y = 440) # Если кнопку делаем в root, то координируем
button_8 = Button(root, text = 'Сохранить', command = save_lbox_to_q_file)
button_8.pack()
button_8.place(x =320, y = 440) # Если кнопку делаем в root, то координируем
#####
global varVR
varVR = IntVar()
frame_1 = Frame(root, bg = 'red', bd = 2)
rb1 = Radiobutton(frame_1, text = u'КВР', command = box_1,variable=varVR,value=1)
rb1.pack()
frame_1.place(x = 50, y = 280 )
#####
frame_1 = Frame(root, bg = 'red', bd = 2)
rb2 = Radiobutton(frame_1, text = u'Монтаж, п/н', command = box_2,variable=varVR,value=2)
rb2.pack()
frame_1.place(x = 50, y = 305 )
#####
frame_1 = Frame(root, bg = 'red', bd = 2)
rb3 = Radiobutton(frame_1, text = u'Проектнi роботи', command = box_3,variable=varVR,value=3)
rb3.pack()
frame_1.place(x = 50, y = 330 )
#####
frame_1 = Frame(root, bg = 'red', bd = 2)
rb4 = Radiobutton(frame_1, text = u'Огляди, ЕО, атестацiя', command = box_4,variable=varVR,value=4)
rb4.pack()
frame_1.place(x = 50, y = 355 )
#####--------------------- Второй ряд--------------- #####
# ——————————————————————————————————————
# Функция чтения файла в Listbox
def read_file_to_lbox():
try:
f = open('lbox.txt', 'r') # Открывает файл для чтения
except:
# Генерируем пункты для примера (вариант 2)
list1=["Генеририруем","Тестовый","Если","не найден","файл","lbox.txt"] # Массив данных для вставки в Listbox
for i in list1: # Цикл вставки в Listbox
lbox1.insert(END,i)
return # Вылет, если не удалось открыть файл
list1 = f.read() # Читает файл
f.close() # Закрыть дескриптор файла
list1 = list1.split('\n') # делит строку указаным разделителем, возвращая список
for i in list1: # Цикл вставки в Listbox
lbox1.insert(END,i)
# ——————————————————————————————————————
# Функция связанная с кнопкой сохранения
def save_lbox_to_file():
list1=lbox1.get(0, END) # Получить все пункты списка
string = ''
for i in list1: # Соединяем в строку
string += i + '\n'
string = string.rstrip('\n') # справа обрезает все символы, указанные в перечислении
# sa = fdialog.asksaveasfilename(filetypes = [("Текстовые файлы", "*.txt")]) # вызов диалога сохранения
try:
f = open('lbox.txt', 'w') # Открывает файл для чтения
# f = open(sa, 'w') # Открыть файл, режим добавления
except:
# print("Could not open File: ")
# print(sys.exc_info()[1])
return # Вылет, если не удалось открыть файл
f.write(string) # пишем строку пунктов в файл
f.close() # Закрываем файл после записи
#root.quit()
# ——————————————————————————————————————
# Функция связанная с выбором в Listbox
def lbox_item_to_entry(evt):
inx = lbox1.index(ANCHOR) # получаем индекс пункта
if inx > lbox1.size() - 1: # Защита от применения действий к пункту без его выбора, список может быть пуст
# print ('выберите пункт для начала')
return
value = lbox1.get(inx) # Получить выделенное
edit1.delete(0, END) # очищает поле ввода
edit1.insert(0,value) # вставляет текст в поле ввода
# ——————————————————————————————————————
# Функция вставки
def lbox_added_item():
text = str(edit2.get()) # Читаем поле ввода
if not (text==''): # Проверяем что текст не пустой, перед вставкой
lbox1.insert(END,text) # Вставляет в конец списка
edit1.delete(0, END) # очищает поле ввода
# lbox1.insert(3,'- "' + text + '" - вставлен в поз:3') # Вставляет в позицию 3
else:
showwarning('Предупреждение', 'Укажите текст добавляемого пункта')
# ——————————————————————————————————————
# Функция редактирования
def lbox_edit_item():
text = str(edit2.get()) # Читаем поле ввода
if not (text==''): # Проверяем что текст не пустой, перед вставкой
# print (text)
# inx = lbox1.get(ACTIVE) # получаем текст пункта
inx = lbox1.index(ANCHOR) # получаем индекс пункта
if inx > lbox1.size() - 1: # Защита от редактирования пункта без выбора
showwarning('Предупреждение', 'Выберите пункт для редактирования')
# print ('выберите пункт для начала')
return
lbox1.delete(inx) # удаляем пункт по индексу
lbox1.insert(inx, text) # Вставляет пункт по индексу
# lbox1.insert(inx, text + ' (удача ?)') # Для визуального теста
edit1.delete(0, END) # очищает поле ввода
else:
showwarning('Предупреждение', 'Укажите новый текст пункта')
# ——————————————————————————————————————
# Функция удаления
#def lbox_delete_item():
#inx = lbox1.index(ANCHOR) # получаем индекс пункта
#if inx > lbox1.size() - 1: # Защита от редактирования пункта без выбора
#showwarning('Предупреждение', 'Выберите пункт для удаления')
#return
#lbox1.delete(inx) # удаляет пункт по индексу
label_1 = Label(root, text = 'Замовник: ') # Создаём лейбл
label_1.place(x = 300, y = 10) # Задаём координаты лейбла
lbox1 = Listbox(root, width = 30) # Создаём список (, selectmode=MULTIPLE) (http://effbot.org/tkinterbook/listbox.htm)
lbox1.grid(padx=300, pady = 30) # Добавляем в слот grid с отступами
read_file_to_lbox()
edit1 = Entry(root, width = 30) # Создаём поле ввода
edit1.grid() # Добавляем в слот grid
# Связали (забиндили) событие выбора в Listbox с функцией "list_to_entry"
lbox1.bind('<<ListboxSelect>>', lbox_item_to_entry)
# Создаём кнопки и вязываем с функциями
button_1 = Button(root, text = '+', command = lbox_added_item)
button_1.pack()
button_1.place(x = 300, y = 195) # Если кнопку делаем в root, то координируем
#button_2 = Button(root, text = '-', command = lbox_delete_item)
#button_2.pack()
#button_2.place(x = 50, y = 250) # Если кнопку делаем в root, то координируем
button_3 = Button(root, text = 'Правка', command = lbox_edit_item)
button_3.pack()
button_3.place(x = 390, y = 195) # Если кнопку делаем в root, то координируем
button_5 = Button(root, text = 'Сохранить', command = save_lbox_to_file)
button_5.pack()
button_5.place(x =320, y = 195) # Если кнопку делаем в root, то координируем
#------------------------------------------SAVE_AS_START------------------------------------------------------------------------
def save_as():
if askyesno("Save As?", "Зберегти введенне?"):
#Объявление переменных
zamownik = ' Замовник ' + str(edit1.get())
zag_rob = ' Вид виконаних робiт ' + str(edit2.get())
if (varVR.get() == 1):
wid_rabot = ' Загальний вид робiт: ' + rb1['text']
elif (varVR.get() == 2):
wid_rabot = ' Загальний вид робiт: ' + rb2['text']
elif (varVR.get() == 3):
wid_rabot = ' Загальний вид робiт: ' + rb3['text']
elif (varVR.get() == 4):
wid_rabot = ' Загальний вид робiт: ' + rb4['text']
###############
print ('\n', zamownik, '\n',
zag_rob, '\n',
wid_rabot, '\n', '-------------------------------------------------------------')
list_1 = ['\n', zamownik, '\n',
zag_rob, '\n',
wid_rabot, '\n']
sa = fdialog.asksaveasfilename(filetypes = [('all files', '.*'), ('xls files', '.xls'),('doc files', '.doc')]) # собственно, само сохранение
f = open(sa, 'a')
for i in list_1:
f.write(i)
f.close()
# Список фиг запишешь в фаил,
# пришлось циклично записывать по строкам
#----------------------------------------------------SAVE_AS_END--------------------------------------------------------------------------------------------
frame_1 = Frame(root, bg = 'red', bd = 2)
button_0 = Button(frame_1, text = u'Зберегти', command = save_as)
button_0.pack()
frame_1.place(x = 400, y = 500 )
root.mainloop()