Разработка базы данных на языке программирования Python
Кафедра
автомобиле- и
тракторостроения
КУРСОВАЯ
РАБОТА
По курсу
информатики
На тему:
Разработка
базы данных на языке программирования Python
РЕФЕРАТ
Объект разработки - база данных для хранения
дипломных проектов.
Цель работы - разработка базы данных на языке
программирования Python.
Во время выполнения работы была разработана
структура базы данных, были созданы окна, включая технологию переходов,
разработан внешний вид окон и в итоге была создана база данных в среде
объектно-ориентированного программирования phyton.
База данных была экспериментально опробована, в
результате чего было установлено, что существенных ошибок в коде программы не
выявлено. Программа может быть успешно применена в работе стат. отделов ВУЗов.
Содержание:
Вступление
Структура
б/д
Окна
ввода-вывода информации
Технология
переходов
Листинг
с пояснениями
Специальное
задание
Направления
улучшения
Вывод
Список
использованной литературы
Вступление
Актуальность хранения информации в электронном
виде заключается в том, что бумажная документация имеет срок годности и
портиться со временем. Для долгосрочного хранения информации гораздо удобнее
использовать электронные базы данных.
К настоящему времени человечеством накоплено
поистине гигантское количество информации об объектах и явлениях. Но эта
информация не лежит мертвым грузом, она хранится в электронном виде и
используется в базах данных. Базы данных - это часть информационных систем -
программно-аппаратных комплексов, осуществляющих хранение и обработку огромных
информационных массивов.
База данных представляет собой определенным
образом структурированную совокупность данных, совместно хранящихся и
обрабатывающихся в соответствии с некоторыми правилами. Как правило, база
данных моделирует некоторую предметную область или ее фрагмент. Очень часто в
качестве постоянного хранилища информации баз данных выступают файлы.
Программа, производящая манипуляции с
информацией в базе данных, называется СУБД (система управления базами данных).
Она может осуществлять выборки по различным критериям и выводить запрашиваемую
информацию в том виде, который удобен пользователю. Основными составляющими
информационных систем, построенных на основе баз данных, являются файлы БД,
СУБД и программное обеспечение (клиентские приложения), позволяющие
пользователю манипулировать информацией и совершать необходимые для решения его
задач действия.
Информация, которая хранится в базе данных,
может постоянно пополняться. От того, как часто это делается, зависит ее
актуальность. Информацию об объектах также можно изменять и дополнять.
В нашем случае создана база данных для хранения
дипломных проектов студентов всех факультетов, групп и специальностей. Для
поиска дипломов разработана удобная технология переходов между окнами.
Структура базы данных
Исходя из задания была разработана база данных:
Рисунок 1 - Структура базы данных Base_stud.bso
Окна ввода/вывода информации
Окно «А»
Окно «А» выполняет функции входа
Окно «В»
В этом окне можно
добавить диплом или открыть уже готовый. Так же можно настроить параметры
шрифта и прочесть о готовой б/д.
Окно «С»
Окно «С» служит
для
ввода всей информации
о студенте, также здесь
указуються пути к документу с
текстом и папке с
изображениями.
В окне «D»
выполняется поиск записей по заданным параметрам
Окно «D»
Окно «P»
Окно «P» служит для вывода полной информации по
студенту
Технология переходов
Листинг с пояснениями
база данный диплом python
osnovnoe okno.py
# -*- coding: utf-8
-*-TkinterstringtkMessageBoxsysosNew_DataFontFind_DataCopy_RezO_ProgtkFontsystem:__init__(self,
root, all_font):(root, all_font)__call__(self, root, all_font):font(event =
None):.font(root)VHOD (event = None):
if self.tip_dostupa == u"Студент":():B
(even = None):
#if even == u"Студент":close_all_prevision(event
= None)::(self.C.FRC)
print u"Окно С закрыто"
except: pass:(self.D.FRD)
print u"Окно D закрыто"
except::(self.E.FRE)
print u"Окно E закрыто"
except::(self.K)
print u"Окно K закрыто"
except::(self.O.FRO)
print u"Окно O закрыто":
#Создание окна "Новая запись"
#Создание окна "Найти
запись"Window_D(event = None):
close_all_prevision().D =
Find_Data.find_data(root,all_font)
#Создание окна "Резервное
копирование"Window_E (event = None):
close_all_prevision().E =
Copy_Rez.copy_rez(root,all_font)
#Создание
окна
"Шрифты"Window_K(event
= None):_all_prevision().K = Font.font(root,all_font)Window_O(event =
None):_all_prevision().O =
O_Prog.o_prog(root,all_font).destroy().geometry("1024x768+0+0")
root.update().title(u"База данных дипломных
робот студентов ТМ факультета")
Bar =
Tkinter.Menu(root)["font"] = all_font["tearoff"] = 0=
Tkinter.Menu(Bar, tearoff = 0 , font = all_font).add_command(label = u"Новая
запись",
command = Window_C).add_command(label = u"Найти
запись",
command = Window_D).add_command(label = u"Резервное
копирование",
command =
Window_E).add_command(label =
u"Общая
информация").add_separator().add_command(label
= u"Выход",
command=die)= Tkinter.Menu(Bar, tearoff = 0 , font =
all_font).add_command(label = u"Размер").add_command(label
= u"Шрифты",command
= Window_K)= Tkinter.Menu(Bar, tearoff = 0 , font = all_font).add_command(label
= u"Помощь").add_command(label
= u"О программе",
command = Window_O).add_cascade(label = u"Управление
базой",
menu = Menu1).add_cascade(label = u"Настройка
вида",
menu = Vid).add_cascade(label = u"О
программе",
menu = Prog).config(menu=Bar).mainloop()
#else:
#pass
#Изминение состояния полей ввода и кнопок
def var123 (even = None):even ==
u"Студент":["state"]
= "disabled"["state"] =
"disabled"["state"] =
"normal":["state"] = "normal"["state"]
= "normal"["state"] = "normal"
#Закрытие программыdie(even = None):=
tkMessageBox.askyesno(u"Важно!!!",u"Закрыть базу данных
дипломных работ студентов ТМ-факультета?")
r = responser == 1:.exit(0):.destroy()=
Tkinter.Frame(root)["width"] = 250["height"] =
300.place(relx = 0.5, rely = 0.5, anchor = "center" )["bg"]
= "white"["bd"] = "4m"["relief"] =
"groove"
#Меню
"Тип
доступа"big(event
= None):_NEW["text"] = (NEW_text[event])(NEW_text[event]).tip_dostupa
= NEW_text[event]_NEW = Tkinter.Menubutton(FR, relief = "raised",
justify = "center")_NEW.place(relx = 0.5, rely = 0.2, anchor =
"center")_NEW.menu = Tkinter.Menu(MB_NEW, tearoff = 0)_NEW
["menu"] = MB_NEW.menu_NEW ["bg"] = "grey"_NEW
["activebackground"] = "white"
MB_NEW ["width"] = 20_text =
[u"Администратор", u"Преподаватель", u"Студент"]
MB_NEW["text"] = (u"Тип
доступа")=
[]i in NEW_text:.append(i+"
"*(20-len(i)))_NEW.menu.add("cascade", label = NEW[0], command =
lambda m=0
:big(m))_NEW.menu.add("cascade",
label = NEW[1], command = lambda m=1
:big(m))_NEW.menu.add("cascade",
label = NEW[2], command = lambda m=2
:big(m))
#Поле ввода "Имя пользователя"=
Tkinter.LabelFrame(FR)["text"] = u"Имя пользователя"
LaFR1.place(relx = 0.5, rely = 0.4,
anchor = "center")= Tkinter.Entry(LaFR1)["width"] =
25["state"] = "disabled".pack()
name = Ent1
#Поле ввода "Пароль"
LaFR2 =
Tkinter.LabelFrame(FR)["text"] = u"Пароль".place(relx
= 0.5, rely = 0.55, anchor = "center")= Tkinter.Entry(LaFR2)["width"]
= 25["state"] = "disabled"["show"] =
"*".pack()= Ent2
#Кнопка
"Вход"=
Tkinter.Button(FR)["bg"] = "white"["bd"] =
"1m"["relief"] = "raised"["text"] =
u"Вход"["state"]
= "disabled".place(relx = 0.4, rely = 0.8, anchor =
"center").bind("<Button-1>",VHOD).bind("<Return>",
VHOD)
#Кнопка
"Выход"=
Tkinter.Button(FR)["bg"] = "white"["bd"] =
"1m"["relief"] = "raised".place(relx = 0.2, rely
= 0.8, anchor = "center")["text"] = u"Выход".bind("<Button-1>",
die)
#Кнопка
"Регистрация"=
Tkinter.Button(FR)["bg"] = "white"["bd"] =
"1m"["relief"] = "raised".place(relx = 0.7, rely
= 0.8, anchor = "center")["text"] = u"Регистрация".bind("<Button-1>").mainloop()__name__
== "__main__":= Tkinter.Tk()_vhod = root.winfo_screenheight()_vhod =
root.winfo_screenwidth()_vhod = (shyrina_vhod / 2) - 125_vhod = (vysota_vhod /
2) - 150_x_y = "250x300+%s+%s"%(x_vhod,y_vhod).geometry(razm_x_y)
root.title(u"Вход в базу данных дипломных
проэктов
all_font = tkFont.Font()_font
["family"] = "Helvetica"_font ["size"] = 15_font
["weight"] = "normal"(root,all_font)
New_Data.py
# -*- coding: cp1251
-*-TkinterScrolledTexttkFontosstringpickletkFileDialogImage
import ImageTk
#окно "С" - создание новой записи
class
new_data:
def __init__(self,
root,all_font):(root,all_font)__call__(self, root,all_font):New_dictonary(event
= None):= {}= 0i in range(0,13):.Param_2[self.dosm[i]] = self.informatino[ss]=
ss + 1type(self.informatino[ss]).Param_2["Theme"] =
self.ST.get(index1 = 0.0,index2 = "end").Param_2["Stepen"]
= self.stepen.Param_2["tabl"] = Ent15.get()
#print self.ST.get(index1 =
0.0,index2 = "end")
#************************************************************
*******************
#ПРОВЕРКА
ПУТЕЙ:os.path.exists("C:\\TM_Base")
== 1:.chdir("C:\\TM_Base"):.makedirs("C:\\TM_Base").chdir("C:\\TM_Base")()Sohranenie
(event= None):Sohranenie_pict(event = None): #сохранение
картинок.chdir(self.path_pict)os.listdir(self.path_pict)=
os.listdir(self.path_pict)= ["C:\\TM_Base\\Spec\\" + self.key_key +
"\\",'C:\\TM_Base\\Bakalavr\\'
+ self.key_key +
'\\','C:\\TM_Base\\Magistr\\' + self.key_key + '\\']= u[event]i in
t:.chdir(self.path_pict)_pict = open(i,"rb")=
open_pict.read()_pict.close().chdir(u[event])_pict = open(i
,"wb")_pict.write(p)_pict.close()Sohranenie_text (event = None):=
["C:\\TM_Base\\Spec\\" + self.key_key +
"\\",'C:\\TM_Base\\Bakalavr\\'
+ self.key_key +
'\\','C:\\TM_Base\\Magistr\\' + self.key_key + '\\']=
string.split(self.path_pdf,"/"):i in z:i.find(".docx") !=
-1:.pdf = iself.pdfi.find(".pdf") != -1:.pdf = iself.pdfi.find(".txt")
!= -1:.pdf = iself.pdfi.find(".doc") != -1:.pdf = iself.pdf:= len
(self.path_pdf)= len (self.pdf)= h - j= self.path_pdf[0:l]N.chdir(N)_pdf =
open(self.pdf,"rb")= open_pdf.read()_pdf.close().chdir(u[event])_pdf
= open(self.pdf,"wb")_pdf.write(f)_pdf.close():_font =
tkFont.Font()_font ["family"] = "Helvetica"_font
["size"] = 30_font ["weight"] = "bold"_font
["slant"] = "italic"= Tkinter.Label(self.FRC)
krasavchik["text"]
= u"Не верный тип данных!\n Текстовый файл не
сохранен!!!"
krasavchik["font"] =
krasavchik_font["bg"] = "red".place(relx = 0.5,rely = 0.6 ,
anchor = "center")create_folders (event = None):
#ПРОВЕРКА
ПУТЕЙ К ПАПКЕ СПЕЦИАЛИСТ:
u =
[C:\\TM_Base\\Spec\\",'C:\\TM_Base\\Bakalavr\\,C:\\TM_Base\\Magistr\\]os.path.exists(u[event])
== 1:.chdir(u[event]):.makedirs(u[event]).chdir(u[event])_1 =
self.Param_2.get("Name_S")_2 =
self.Param_2.get("SName_S")_3 =
self.Param_2.get("LName_S").key_key = key_2 +"_" + key_1
+"_" + key_3os.path.exists(u[event] + self.key_key + "\\")
== 1:.chdir(u[event] + self.key_key + "\\").stud_file = open
("Base_stud.bso", "rb") #ОТКРЫВАЕМ ФАЙЛ С
ИНФ О СТУДЕНТЕ:.makedirs(u[event]
+ self.key_key).chdir(u[event] + self.key_key).stud_file = open
("Base_stud.bso", "wb") #ОТКРЫВАЕМ ФАЙЛ С
ИНФ О СТУДЕНТЕ:.dump(self.Param_2,self.stud_file):.stud_file.close().stud_file
= open ("Base_stud.bso",
"wb").dump(self.Param_2,self.stud_file).stud_file.close()_text(event)_pict(event)self.stepen
== u"Специалист":_folders(0)self.stepen
== u"Бакалавр":_folders(1):_folders(2)
#************************************************************
***********************************************************otmena(event
= None):.FRC.destroy()
root.title(u"Cоздание
новой записи")
#root.geometry("1024x768+0+0")Seve_inform(event
= None):_get=[]i in Inform:i.get() == '':["bg"] =
"red":["bg"] =
"white"_get.append(i.get()).informatino = entry_getlen(entry_get) ==
14:_dictonary()_font = tkFont.Font()_font ["family"] =
"Helvetica"_font ["size"] = 30_font ["weight"] =
"bold"_font ["slant"] = "italic"= Tkinter.Label(self.FRC)
krasavchik["text"]
= u"Новая запись успешно добавлена"["font"] =
krasavchik_font["bg"] = "yellow"
krasavchik.place(relx = 0.5,rely =
0.5 , anchor = "center")
else:
#Новая
рамка для окна "С"
self.FRC =
Tkinter.Frame(root).FRC["width"] = 1024.FRC["height"] =
768.FRC.place(relx = 0, rely = 0, anchor = "nw" )= [].dosm =
["Spec","Grup","Mark","God_1","Name_S","SName_S","LName_S","Nam
e_P","SName_P","LName_P","page","plac","pict","tabl"]
#Parametry
= ["Специальность","Группа","Оценка","Год
защити","Имя","Фамилия","Отчество","Имя2","Фамилия2","Отчество2"
,"Тема
дипломного проэкта","Количество страниц","Количество
плакатов","Количество
рисунков","Количество таблиц"]
self.Param_2 =
{"Spec":u"","Grup":u"","Mark":"","God_1":"","Name_S":"","SName_S":"",
"LName_S":"","Name_P":"","SName_P":"","LName_P":"","page":"","plac"
:"","pict":"","tabl":u"попал
ты чувак"}
LaFR4["text"]
= u"Год защити"
LaFR4["font"] =
all_font.place(relx = 0.5, rely = 0.03, anchor = "w")=
Tkinter.Entry(LaFR4)["width"] = 10.append(Ent4).pack()=
Tkinter.LabelFrame(self.FRC)["text"] = u"Степень"["font"]
= all_font.place(relx = 0.66, rely = 0.03, anchor = "w")big(event =
None):_NEW["text"] = (NEW_text[event]).stepen =
MB_NEW["text"]
#self.Inform.append(MB_NEW["text"])_NEW
= Tkinter.Menubutton(LaFR5, relief = "raised", justify =
"center")_NEW.menu =
Tkinter.Menu(MB_NEW, tearoff = 0)_NEW ["menu"] = MB_NEW.menu_NEW
["bg"] = "grey"_NEW ["activebackground"] =
"white"_NEW ["width"] = 15_text = [u"Специалист",
u"Бакалавр",
u"Магистр",
u"
Выбрать " ]
MB_NEW["text"] =
(NEW_text[3])= []i in NEW_text:.append(i)_NEW.menu.add("cascade",
label = NEW[0], command = lambda m=0
:big(m))_NEW.menu.add("cascade",
label = NEW[1], command = lambda m=1
:big(m))_NEW.menu.add("cascade",
label = NEW[2], command = lambda m=2
:big(m))
MB_NEW.pack()
#Создание
полей ввода, вторая строка (Данные о студенте)
LaFR_Date_1 =
Tkinter.LabelFrame(self.FRC)
LaFR_Date_1["text"]
= u"Данные о студенте"
LaFR_Date_1["font"] =
all_font_Date_1.place(relx = 0.01, rely = 0.12, anchor =
"w")_Date_1["width"] = 924_Date_1["height"] = 85=
Tkinter.LabelFrame(LaFR_Date_1)["text"] = u"Имя"["font"]
= all_font.place(relx = 0.01, rely = 0.5 , anchor = "w")=
Tkinter.Entry(LaFR6)["width"] = 40.append(Ent6).pack()=
Tkinter.LabelFrame(LaFR_Date_1)["text"] = u"Фамилия"["font"]
= all_font.place(relx = 0.5, rely = 0.5 , anchor = "center")=
Tkinter.Entry(LaFR7)["width"] = 40.append(Ent7).pack()=
Tkinter.LabelFrame(LaFR_Date_1)["text"] = u"Отчество"["font"]
= all_font.place(relx = 0.99, rely = 0.5 , anchor = "e")=
Tkinter.Entry(LaFR8)["width"] = 40.append(Ent8).pack()
#Создание
полей ввода, третья строка (Данные о научном
руководителе)
LaFR_Date_2 =
Tkinter.LabelFrame(self.FRC)
LaFR_Date_2["text"]
= u"Данные о научном руководителе"
LaFR_Date_2["font"] =
all_font_Date_2.place(relx = 0.01, rely = 0.25, anchor =
"w")_Date_2["width"] = 924_Date_2["height"] = 85=
Tkinter.LabelFrame(LaFR_Date_2)["text"] = u"Имя"["font"]
= all_font.place(relx = 0.01, rely = 0.5 , anchor = "w")=
Tkinter.Entry(LaFR9)["width"] = 40.append(Ent9).pack()=
Tkinter.LabelFrame(LaFR_Date_2)["text"] = u"Фамилия"["font"]
= all_font.place(relx = 0.5, rely = 0.5 , anchor = "center")=
Tkinter.Entry(LaFR10)["width"] = 40.append(Ent10).pack()=
Tkinter.LabelFrame(LaFR_Date_2)["text"] = u"Отчество"["font"]
= all_font.place(relx = 0.99, rely = 0.5 , anchor = "e")=
Tkinter.Entry(LaFR11)["width"] = 40.append(Ent11).pack()
#Поле
ввода текста "Тема дипломного проэкта"
LaFR_Date_3 =
Tkinter.LabelFrame(self.FRC)
LaFR_Date_3["text"]
= u"Тема дипломного проэкта"
LaFR_Date_3["font"] =
all_font_Date_3.place(relx = 0.01, rely = 0.32, anchor = "nw").ST
=ScrolledText.ScrolledText(LaFR_Date_3,background="white").ST["width"]
= 150.ST["height"] =7
#self.self.ND = ST.get()
#Inform.append(ST)
#mm = ST.get()
#print self.ND.ST.pack()
#Создание
полей ввода, третья строка (Данные о дипломном проэкте)
LaFR_Date_4 =
Tkinter.LabelFrame(self.FRC)
LaFR_Date_4["text"]
= u"Данные о дипломном проэкте"
LaFR_Date_4["font"] =
all_font_Date_4.place(relx = 0.01, rely = 0.55, anchor =
"w")_Date_4["width"] = 924_Date_4["height"] = 90=
Tkinter.LabelFrame(LaFR_Date_4)
LaFR12["text"]
= u"Количество страниц"
LaFR12["font"] = all_font.place(relx
= 0.01, rely = 0.5 , anchor = "w")=
Tkinter.Entry(LaFR12)["width"] = 32
#Ent12 ["bd"] =
6.append(Ent12).pack()= Tkinter.LabelFrame(LaFR_Date_4)
LaFR13["text"]
= u"Количество плакатов"
LaFR13["font"] = all_font.place(relx
= 0.38, rely = 0.5 , anchor = "center")=
Tkinter.Entry(LaFR13)["width"] = 32.append(Ent13).pack()=
Tkinter.LabelFrame(LaFR_Date_4)
LaFR14["text"]
= u"Количество рисунков"
LaFR14["font"] =
all_font.place(relx = 0.52, rely = 0.5 , anchor = "w")= Tkinter.Entry(LaFR14)["width"]
= 32.append(Ent14).pack()= Tkinter.LabelFrame(LaFR_Date_4)
LaFR15["text"]
= u"Количество таблиц"
LaFR15["font"] =
all_font.place(relx = 0.99, rely = 0.5 , anchor = "e")=
Tkinter.Entry(LaFR15)["width"] = 32.append(Ent15).pack()
#Создание
полей ввода пути к файлам
LaFR_Date_5 =
Tkinter.LabelFrame(self.FRC)
LaFR_Date_5["text"]
= u"Опредиление путей к файлам"
LaFR_Date_5["font"] =
all_font_Date_5.place(relx = 0.01, rely = 0.63, anchor =
"nw")_Date_5["width"] = 924_Date_5["height"] =
120path_pict(event = None):
M
= u"Выберете папку с изображениями и нажмите ОК"
path1 =
tkFileDialog.askdirectory(title=M)_label1 =
Tkinter.Label(LaFR_Date_5)_label1.place(relx = 0.65, rely = 0.7, anchor =
"center")_label1['borderwidth'] = 5_label1["font"] =
all_font_label1["height"] = 2_label1["width"] =
40_label1['text'] = path1.path_pict = path1
def
path_pdf():= u"Выберете файл с текстом"
path =
tkFileDialog.askopenfilename(title=P)_label =
Tkinter.Label(LaFR_Date_5)_label.place(relx = 0.65, rely = 0.25, anchor =
"center")
#path_label["bg"] =
"red"_label['borderwidth'] = 5_label["font"] =
all_font_label["height"] = 2_label["width"] =
40_label['text'] = path.path_pdf = path
#Создание кнопок=
Tkinter.Button(LaFR_Date_5)["bg"] = "white"["bd"]
= "1m"["width"] = 30["font"] =
all_font["relief"] = "raised".place(relx = 0.2, rely =
0.25, anchor = "center")
But3["text"]
= u"Путь к документу с текстом"
But3["command"] =
path_pdf= Tkinter.Button(LaFR_Date_5)["width"] = 30["bg"] =
"white"["bd"] = "1m"["font"] = all_font["relief"]
= "raised".place(relx = 0.2, rely = 0.7, anchor = "center")
But4["text"]
= u"Путь к изображениям"
But4["command"] =
path_pict= Tkinter.Button(self.FRC)["bg"] =
"white"["bd"] = "1m"["font"] =
all_font["relief"] = "raised".place(relx = 0.25, rely =
0.85, anchor = "center")["text"] = u"Отмена".bind("<Button-1>",otmena)=
Tkinter.Button(self.FRC)["bg"] = "white"["font"]
= all_font["bd"] = "1m"["relief"] =
"raised".place(relx = 0.75, rely = 0.85, anchor =
"center")["text"] = u"Сохранить".bind("<Button-1>",
Seve_inform)__delattr__ (self, a):.FRC.destroy()
#print
u"ok))))))))))))))))))"__name__ == "__main__":=
Tkinter.Tk().geometry("1024x768+0+0")_font = tkFont.Font()_font
["family"] = "Helvetica"_font ["size"] = 14_font
["weight"] = "normal"_data(root,all_font).mainloop()
Find_Data.py
# -*- coding: cp1251
-*-TkinterScrolledTexttkFontosstringpickletkFileDialogImageImageTkpreview_find
#окно
"D" - поиск данныхfind_data:__init__(self,
root, all_font):(root, all_font)__call__(self, root, all_font):.FRD = Tkinter.Frame(root).FRD["width"]
= 1024.FRD["height"] = 768.FRD.place(relx = 0, rely = 0, anchor =
"nw" ).FRD.pack()
#************************************************************
************************find_data
(event = None):.baza_vsia_sort = [].baza_vsia = [].u =
['C:\\TM_Base\\Bakalavr\\',"C:\\TM_Base\\Spec\\",'C:\\TM_Base\\Magistr\\]m
in self.u:.chdir(m).p = m
#print self.baza_vsia_sort
#print self.dictonary_find.keys()w
in self.dictonary_find.keys():
#print
self.dictonary_find.get(w).folders = [].baza_vsia_sortw == "1":=
os.listdir(m)i in folders:i[-4] != '.':.folders.append(i)i in
self.folders:.path_2 = self.p + i.chdir(self.path_2)= open
("Base_stud.bso" , "rb").k = pickle.load(base).close()=
self.dictonary_find.get(w)[0]= self.dictonary_find.get(w)[1]_sr =
self.k.get(poisk)
#if data.decode("cp1251")
== data_sr:data == data_sr:.baza_vsia.append(self.k)
#print self.baza_vsia:
#print len(self.baza_vsia)
#print "baza vsja"
#print self.baza_vsiai in range(0,
len(self.baza_vsia)):= self.baza_vsia[i]
#print b=
self.dictonary_find.get(w)[0]= self.dictonary_find.get(w)[1]_sr =
b.get(poisk)data == data_sr:.baza_vsia_sort.append(b)
#print "2"
#print self.baza_vsia
#print
self.baza_vsia_sortfind_data_tabl(event = None):.dictonary_find.keys().Frame_Listbox.destroy()_widget_create().kol
= 0.vibor = self.kol.Label_02 ["text"] = u"ФИО".Label_03
["text"] = u"Год защиты"i in
self.baza_vsia:.base_for_prosmotr = []"2".kol = self.kol + 1= i_1 =
m.get("SName_S")_2 = m.get("Name_S")_3 =
m.get("LName_S")_list_02 = key_1 + " " + key_2 + "
" + key_3_list_03 =
m.get("God_1").Listbox_01.insert("end",
self.kol).Listbox_02.insert("end", text_list_02).Listbox_03.insert("end",
text_list_03).base_for_prosmotr = self.baza_vsialen(self.baza_vsia_sort[0])
> 0:.base_for_prosmotr = self.baza_vsia_sorti in self.baza_vsia_sort:u"второй отбор".kol
= self.kol + 1= i_1 = m.get("SName_S")_2 =
m.get("Name_S")_3 = m.get("LName_S")_list_02 = key_1 +
" " + key_2 + " " + key_3_list_03 = m.get("God_1").Listbox_01.insert("end",
self.kol).Listbox_02.insert("end",
text_list_02).Listbox_03.insert("end", text_list_03)
else:u"параметр
поиска только один"
def die (event =
None):self.baza_vsia_sortself.baza_vsia.FRD.destroy().kol = 0.dictonary_find =
{}_for_poisk = []DOBAVIT (event = None):.kol = self.kol + 1.vibor =
self.kol:_list_03 = self.Znachenie_data.get():_list_03 =
self.Znachenie_data.Listbox_01.insert("end",
self.kol).Listbox_02.insert("end", self.vibor_data).Listbox_03.insert("end",
text_list_03)_for_poisk =
[]_for_poisk.append(self.parametp_poiska)_for_poisk.append(text_list_03)
#print param_for_poiskself.kol ==
1:= "1"self.kol == 2:= "2"self.kol == 3:=
"3"self.kol == 4:= "4"self.kol == 5:= "5"self.kol
== 6:= "6".dictonary_find[ch] = param_for_poisk.l_spis = self.kol
#print
self.dictonary_findpreview_inf (event =
None):self.base_for_prosmotr_find.preview_find(root,all_font,self.base_for_prosmotr,event)Clear(event
=None):.Frame_Listbox.destroy()
#print
"listbox.destroy".kol = 0.dictonary_find =
{}_widget_create()destroy_pole(event = None):## убивает открытие поля:.MB_Spec.destroy()::.EntD1.destroy()::.MB_Stepen.destroy()::.MB_Mark.destroy()::.Ent_Name.destroy()::.Ent_SName.destroy()::.Ent_LName.destroy()::.Ent_Kol_page.destroy()::.Ent_Kol_pict.destroy()::.Ent_Kol_plac.destroy()::.Ent_Kol_tabl.destroy()::.Ent_Theme.destroy()::.God.destroy(): Spec(event = None):## выбор
специальности
self.EntD1 =
Tkinter.Entry(self.FRD).EntD1.place(relx = 0.5, rely = 0.1, anchor =
"w").EntD1['font'] = all_font.EntD1["width"] =
20.Znachenie_data = self.EntD1Grup(event = None):## поле ввода
"Группа".EntD1
= Tkinter.Entry(self.FRD).EntD1.place(relx = 0.5, rely = 0.1, anchor =
"w").EntD1['font'] = all_font.EntD1["width"] =
20.Znachenie_data = self.EntD1Mark (event = None): ## поле ввода
"Оценка"m
(event = None):.MB_Mark["text"] = event.Znachenie_data =
event.MB_Mark = Tkinter.Menubutton(self.FRD, relief = "raised",
justify =
"center").MB_Mark.place(relx
= 0.5, rely = 0.1, anchor = "w").MB_Mark.menu = Tkinter.Menu(self.MB_Mark,
tearoff = 0).MB_Mark ["menu"] = self.MB_Mark.menu.MB_Mark
["bg"] = "white".MB_Mark ["font"] =
all_font.MB_Mark ["width"] = 20.MB_Mark["text"] = (u"Вибрать оценку")
#self.MB_Mark.menu.add("cascade",
label = u"1", command = lambda
s=u"1" :m(s))
#self.MB_Mark.menu.add("cascade",
label = u"2", command = lambda
s=u"2"
:m(s)).MB_Mark.menu.add("cascade", label = u"3", command =
lambda
s=u"3"
:m(s)).MB_Mark.menu.add("cascade", label = u"4", command =
lambda
s=u"4"
:m(s)).MB_Mark.menu.add("cascade", label = u"5", command =
lambda
s=u"5" :m(s))Stepen (event
= None): ## поле ввода
"степень"st
(event = None):.MB_Stepen["text"] = event.Znachenie_data =
event.MB_Stepen = Tkinter.Menubutton(self.FRD, relief = "raised",
justify =
"center").MB_Stepen.place(relx
= 0.5, rely = 0.1, anchor = "w").MB_Stepen.menu =
Tkinter.Menu(self.MB_Stepen, tearoff = 0).MB_Stepen ["menu"] =
self.MB_Stepen.menu.MB_Stepen ["bg"] = "white".MB_Stepen
["font"] = all_font.MB_Stepen ["width"] =
20.MB_Stepen["text"] = (u"Вибрать степень").MB_Stepen.menu.add("cascade",
label = u"Бакалавр",
command = s=u"Бакалавр"
:st(s)).MB_Stepen.menu.add("cascade", label = u"Специалист",
command =
lambda s=u"Специалист"
:st(s)).MB_Stepen.menu.add("cascade", label = u"Магистр",
command =
lambda s=u"Магистр"
:st(s))Name(event = None):## поле ввода "Имя".Ent_Name
= Tkinter.Entry(self.FRD).Ent_Name.place(relx = 0.5, rely = 0.1, anchor =
"w").Ent_Name ['font'] = all_font.Ent_Name["width"] =
30.Znachenie_data = self.Ent_NameSName(event = None):## поле ввода
"ФАМИЛИЯ".Ent_SName
= Tkinter.Entry(self.FRD).Ent_SName.place(relx = 0.5, rely = 0.1, anchor =
"w").Ent_SName ['font'] = all_font.Ent_SName["width"] =
30.Znachenie_data = self.Ent_SNameLName(event = None):## поле ввода
"ОТЧЕСТВО".Ent_LName
= Tkinter.Entry(self.FRD).Ent_LName.place(relx = 0.5, rely = 0.1, anchor =
"w").Ent_LName ['font'] = all_font.Ent_LName["width"] =
30.Znachenie_data = self.Ent_LName
def
Kol_page(event = None): ## поле ввода "КОЛИЧЕСТВО СТРАНИЦ"
self.Ent_Kol_page =
Tkinter.Entry(self.FRD).Ent_Kol_page.place(relx = 0.5, rely = 0.1, anchor =
"w").Ent_Kol_page ['font'] = all_font.Ent_Kol_page["width"]
= 30.Znachenie_data = self.Ent_Kol_page
def
Kol_plac(event = None): ## поле ввода "КОЛИЧЕСТВО
ПЛАКАТОВ"
self.Ent_Kol_plac =
Tkinter.Entry(self.FRD).Ent_Kol_plac.place(relx = 0.5, rely = 0.1, anchor =
"w").Ent_Kol_plac ['font'] = all_font.Ent_Kol_plac["width"]
= 30.Znachenie_data = self.Ent_Kol_plac
def
Kol_pict(event = None):## поле ввода "КОЛИЧЕСТВО РИСУНКОВ"
self.Ent_Kol_pict =
Tkinter.Entry(self.FRD).Ent_Kol_pict.place(relx = 0.5, rely = 0.1, anchor =
"w").Ent_Kol_pict ['font'] = all_font.Ent_Kol_pict["width"]
= 30.Znachenie_data = self.Ent_Kol_pict
def
Kol_tabl(event = None): ## поле ввода "КОЛИЧЕСТВО ТАБЛИЦ
self.Ent_Kol_tabl =
Tkinter.Entry(self.FRD).Ent_Kol_tabl.place(relx = 0.5, rely = 0.1, anchor =
"w").Ent_Kol_tabl ['font'] = all_font.Ent_Kol_tabl["width"]
= 30.Znachenie_data = self.Ent_Kol_tabl
def
God (event = None):## поле ввода "КОЛИЧЕСТВО РИСУНКОВ"
self.God =
Tkinter.Entry(self.FRD).God.place(relx = 0.5, rely = 0.1, anchor =
"w").God ['font'] = all_font.God ["width"] =
30.Znachenie_data = self.God Param(event = None):##при
выборе параметра открывается новое
поле ввода\выбора_PARAM["text"]
= eventevent == u"Специальность":_pole()().parametp_poiska
= "Spec"event == u"Группа":_pole()().parametp_poiska
= "Grup"event == u"Оценка":_pole()().parametp_poiska
= "Mark"event == u"Степень":_pole()().parametp_poiska
= "Stepen"event == u"Имя":_pole()().parametp_poiska
= "Name_S"event == u"Фамилия":_pole()().parametp_poiska
= 'SName_S'event == u"Отчество":_pole()().parametp_poiska
= "LName_S"
elif
event == u"Количество страниц":
destroy_pole()_page().parametp_poiska
= "page"
elif
event == u"Количество плакатов":
destroy_pole()_plac().parametp_poiska
= "plac"
elif
event == u"Количество рисунков":
destroy_pole()_pict().parametp_poiska
= "pict"
elif
event == u"Количество таблиц":
destroy_pole()_tabl().parametp_poiska
= "tabl"event == u"Год":_pole()().parametp_poiska
= "God_1".vibor_data = event.title(u"Найти
запись")
#root.geometry("1024x768+0+0")_OK
= Tkinter.Button(self.FRD)_OK ["text"] = u"Добавить"_OK.place(relx
= 0.5, rely = 0.25, anchor = "center")_OK["height"] = 1_OK
["width"] = 20_OK ["font"] =
all_font_OK.bind("<Button-1>",DOBAVIT)_Clear =
Tkinter.Button(self.FRD)_Clear ["text"] = u"Очистить список"_Clear.place(relx
= 0.5, rely = 0.75, anchor = "center")_Clear["height"] =
1_Clear ["width"] = 20_Clear ["font"] =
all_font_Clear.bind("<Button-1>", Clear)_Otmena = Tkinter.Button(self.FRD)_Otmena
["text"] = u"Отмена"_Otmena.place(relx =
0.2, rely = 0.85, anchor = "center")_Otmena["height"] =
1_Otmena ["width"] = 25_Otmena ["font"] =
all_font_Otmena.bind("<Button-1>", die)_Find =
Tkinter.Button(self.FRD)_Find ["text"] = u"Искать"_Find.place(relx
= 0.8, rely = 0.85, anchor = "center")_Find["height"] =
1_Find ["width"] = 25_Find ["font"] =
all_font_Find.bind("<Button-1>",find_data)_Find.bind("<ButtonRelease>",find_data_tabl)
# основное меню параметров поиска_PARAM
= Tkinter.Menubutton(self.FRD, relief = "raised", justify =
"center")_PARAM.place(relx
= 0.2, rely = 0.1, anchor = "center")_PARAM.menu =
Tkinter.Menu(MB_PARAM, tearoff = 0)_PARAM ["menu"] =
MB_PARAM.menu_PARAM ["bg"] = "white"_PARAM
["font"] = all_font_PARAM ["width"] =
25_PARAM["text"] = (u"Параметр поиска")_PARAM.menu.add("cascade",
label = u"Специальность",
command = p=u"Специальность"
:Param(p))_PARAM.menu.add("cascade", label = u"Группа",
command = lambda
p=u"Группа"
:Param(p))_PARAM.menu.add("cascade", label = u"Оценка",
command = lambda
p=u"Оценка"
:Param(p))_PARAM.menu.add("cascade", label = u"Степень",
command = lambda
p=u"Степень"
:Param(p))_PARAM.menu.add("cascade", label = u"Имя",
command = lambda
p=u"Имя"
:Param(p))_PARAM.menu.add("cascade", label = u"Фамилия",
command =
lambda p=u"Фамилия"
:Param(p))_PARAM.menu.add("cascade", label = u"Отчество",
command =
lambda p=u"Отчество"
:Param(p))_PARAM.menu.add("cascade", label = u"Количество страниц",
command = lambda p=u"Количество страниц"
:Param(p))_PARAM.menu.add("cascade", label = u"Количество плакатов",
command = lambda p=u"Количество плакатов"
:Param(p))_PARAM.menu.add("cascade", label = u"Количество рисунков",
command = lambda p=u"Количество рисунков"
:Param(p))_PARAM.menu.add("cascade", label = u"Количество таблиц",
command = lambda p=u"Количество таблиц"
:Param(p))
#MB_PARAM.menu.add("cascade",
label = u"Тема дипломного проэкта",
command = lambda p=u"Тема
дипломного проэкта" :Param(p))
MB_PARAM.menu.add("cascade",
label = u"Год",
command = lambda
p=u"Год"
:Param(p))
#************************************************************
************************
#Создание таблиц:sroot_widget_create(event
= None):
self.status
= 0 ## Окон верхнего уровня не существуетanalis(event = None): ## Опеределяем
направление прокручинвания
для
мышки (MouseWhell): ## Чтобы для внешнего виджета не работало
self.Frame_Listbox.focus_set()()event.delta
< 0:():():Clear(event =
None):.Listbox_01.select_clear("active").Listbox_02.itemconfig(self.pos,
bg = "white").Listbox_03.itemconfig(self.pos, bg =
"white")Perehod(event =
None):.Listbox_01.activate(self.pos).Listbox_01.select_set(self.pos).Listbox_02.itemconfig(self.pos,
bg = "grey").Listbox_03.itemconfig(self.pos, bg =
"grey")Hod(event = None):.vibor = string.atoi(self.Listbox_01.curselection()[0]).pos
= self.viborbind_but(event = None):
## На левую клавишу мыши.Frame_Listbox.focus_set():
self.vibor = string.atoi(self.Listbox_01.curselection()[0]): pass: self.vibor =
string.atoi(self.Listbox_02.curselection()[0]): pass: self.vibor =
string.atoi(self.Listbox_03.curselection()[0]): pass.pos = self.vibor
#print
self.vibor_inf(self.vibor)()_focus_out()
## На левую клавишу мышиalt_bind_but(event
= None):
## На альт
+ левая клваиша.Frame_Listbox.focus_set():
self.vibor = string.atoi(self.Listbox_01.curselection()[0]): pass: self.vibor =
string.atoi(self.Listbox_02.curselection()[0]): pass: self.vibor =
string.atoi(self.Listbox_03.curselection()[0]): pass.pos =
self.vibor"alt"()_focus_out()
##
На альт + левая клваиша.l_spis = 1
self.vibor = 0.h_spis = 10.pos =
0.prev_verh = 0.prev_nizz = self.h_spis - 1
def
Down(event = None): ## Кнопка вниз - перемещение вниз всех
четырех
списков
##
Прокручиваем списки
##
Если список находится в границе видимой облафсти - ее верх и низ
не
меняется
if self.pos >
self.prev_nizz:.prev_nizz = self.prev_nizz + 1.prev_verh = self.prev_verh +
1self.pos < self.prev_nizz:self.pos ==
self.prev_nizz:.Listbox_01.see(self.prev_nizz).Listbox_02.see(self.prev_nizz).Listbox_03.see(self.prev_nizz).Listbox_01.see(self.prev_verh).Listbox_02.see(self.prev_verh).Listbox_03.see(self.prev_verh)
##
Прокручиваем спискиUp(event = None): ## Кнопка вверх - перемещение вверх всех
трех
списков
Clear()self.pos > 0:.pos =
self.pos - 1
Perehod()
##
Прокручиваем списки
##
Если список находится в границе видимой облафсти - ее верх и низ
не
меняется
if self.pos <
self.prev_verh:.prev_nizz = self.prev_nizz - 1.prev_verh = self.prev_verh -
1self.pos > self.prev_verh:self.pos ==
self.prev_verh:.Listbox_01.see(self.prev_nizz).Listbox_02.see(self.prev_nizz).Listbox_03.see(self.prev_nizz).Listbox_01.see(self.prev_verh).Listbox_02.see(self.prev_verh).Listbox_03.see(self.prev_verh)
## Прокручиваем списки.Frame_Listbox
= Tkinter.LabelFrame(self.FRD).Frame_Listbox ["text"] = u"Уровни отсеивания".Frame_Listbox
["labelanchor"] = "n".Frame_Listbox ["relief"] =
"ridge".Frame_Listbox ["takefocus"] =
1.Frame_Listbox.bind("<Down>",
Down).Frame_Listbox.bind("<Up>", Up).Frame_Listbox.bind_all("<MouseWheel>",
analis).Frame_Listbox.bind("<KeyRelease-Return>",
Hod).Frame_Listbox.bind("<KeyRelease-space>",
Hod).Frame_Listbox.place(relx = 0.5, rely = 0.5, anchor = "center")
#self.Frame_Listbox.focus_force()_01
= Tkinter.Label(self.Frame_Listbox)_01 ["text"] = u"Номер"_01.grid(row
= 1, column = 1, sticky = "ensw").Label_01 = Label_01_02 =
Tkinter.Label(self.Frame_Listbox)_02 ["text"] = u"Параметр"_02.grid(row
= 1, column = 2, sticky = "ensw").Label_02 = Label_02_03 =
Tkinter.Label(self.Frame_Listbox)_03 ["text"] = u"Значение"_03.grid(row
= 1, column = 3, sticky = "ensw").Label_03 = Label_03.Scrol_BA =
Tkinter.Scrollbar(self.Frame_Listbox).Scrol_BA ["command"] =
self.OnVsb.Listbox_01 = Tkinter.Listbox(self.Frame_Listbox).Listbox_01 ["takefocus"]
= 0.Listbox_01 ["width"] = 10.Listbox_01 ["height"] =
self.h_spis.Listbox_01 ["yscrollcommand"] = self.Scrol_BA.set
#self.Listbox_01.insert("end",
*date).Listbox_01.select_set(self.vibor).Listbox_01.activate(self.vibor).Listbox_01.bind("<ButtonRelease-1>",
bind_but).Listbox_01.bind("<Alt-ButtonRelease-1>",
alt_bind_but).Listbox_02 = Tkinter.Listbox(self.Frame_Listbox).Listbox_02
["takefocus"] = 0.Listbox_02 ["width"] = 32.Listbox_02
["height"] = self.h_spis.Listbox_02 ["yscrollcommand"] =
self.Scrol_BA.set
#self.Listbox_02.insert("end",
*date_sl)
#self.Listbox_02.itemconfig(self.vibor,
background =
"grey").Listbox_02.bind("<ButtonRelease-1>",
bind_but).Listbox_02.bind("<Alt-ButtonRelease-1>",
alt_bind_but).Listbox_03 = Tkinter.Listbox(self.Frame_Listbox).Listbox_03
["takefocus"] = 0.Listbox_03 ["width"] = 40.Listbox_03
["height"] = self.h_spis.Listbox_03 ["yscrollcommand"] =
self.Scrol_BA.set
#self.Listbox_03.insert("end",
*date)
#self.Listbox_03.itemconfig(self.vibor,
background = "grey").Listbox_03.bind("<ButtonRelease-1>",
bind_but).Listbox_03.bind("<Alt-ButtonRelease-1>",
alt_bind_but).Listbox_01.grid(row = 2, column = 1, sticky =
"ensw").Listbox_02.grid(row = 2, column = 2, sticky =
"ensw").Listbox_03.grid(row = 2, column = 3, sticky =
"ensw").Scrol_BA.grid(row = 2, column = 6, sticky = "ensw")
def
from_focus_in(event = None): ## При появлении фокуса - выделение
на
бывший элементself.status == 0: ## Переход между элементами root, а не
окнами...
self.Listbox_01.select_set(self.vibor).Listbox_01.activate(self.vibor).Listbox_02.itemconfig(self.vibor,
background = "grey").Listbox_03.itemconfig(self.vibor, background =
"grey").Listbox_01.see(self.prev_nizz).Listbox_02.see(self.prev_nizz).Listbox_03.see(self.prev_nizz).Listbox_01.see(self.prev_verh).Listbox_02.see(self.prev_verh).Listbox_03.see(self.prev_verh)
else:
## Переход между окнами - например, возвращение из окна .root_comment
self.status =
0.Frame_Listbox.bind("<FocusIn>", from_focus_in)
def
from_focus_out (event = None): ## При потере фокуса - уходит и
выделение
self.Listbox_01.select_clear("active").vibor
= self.posi in range(self.l_spis):.Listbox_02.itemconfig(i, background =
"white").Listbox_03.itemconfig(i, background =
"white").Frame_Listbox.bind("<FocusOut>", from_focus_out)_widget_create()__delattr__
(self, a):
self.FRD.destroy()OnVsb
(self, *args): ## Для одновременного прокручивания
нескольких
списков
self.Listbox_01.yview(*args).Listbox_02.yview(*args).Listbox_03.yview(*args)__name__
== "__main__":= Tkinter.Tk().geometry("1024x768+0+0")_font
= tkFont.Font()_font ["family"] = "Helvetica"_font
["size"] = 18_font ["weight"] =
"normal"_data(root,all_font).mainloop()
preview_find.py
# -*- coding:
utf-8-*-TkinterScrolledTexttkFontosstringpickletkFileDialogImageImageTkpreview_find:__init__(self,
root,all_font,res_data,number_of_path):(root,all_font,res_data,number_of_path)__call__(self,root,all_font,res_data,number_of_path):.number_of_path
= number_of_pathotmena(event = None):.FRC.destroy()
root.title(u"Просмотр
результатов поиска")
self.dosm =
["Spec","Grup","Mark","God_1","Name_S","SName_S","LName_S","Nam
e_P","SName_P","LName_P","page","plac","pict","tabl"]
#Parametry =
["Специальность","Группа","Оценка",
"Год
защити","Р�РјСЏ","Фамилия","Отчество","Р
�мя2","Фамилия2","Отчество2","Тема
дипломного
проэкта","Количество
страниц","Количество
плакатов","Количество
рисунков","Количество
таблиц"]
self.Param_2 =
{"Spec":u"","Grup":u"","Mark":"","God_1":"","Name_S":"","SName_S":"",
"LName_S":"","Name_P":"","SName_P":"","LName_P":"","page":"","plac"
:"","pict":"","tabl":""}.FRC
= Tkinter.Frame(root).FRC["width"] = 1024.FRC["height"] =
768.FRC.place(relx = 0, rely = 0, anchor = "nw" ).stud_inf =
res_data[number_of_path]= Tkinter.LabelFrame(self.FRC)["text"] =
u"Специальность"["font"]
= all_font.place(relx = 0.02, rely = 0.03, anchor = "w").Ent1 =
Tkinter.Entry(LaFR1).Ent1["width"] = 40.Ent1.insert( "end"
,self.stud_inf.get("Spec")).Ent1 ["state"] =
"disabled".Ent1.pack()=
Tkinter.LabelFrame(self.FRC)["text"] = u"Группа"["font"]
= all_font.place(relx = 0.34, rely = 0.03, anchor = "w").Ent2 =
Tkinter.Entry(LaFR2).Ent2["width"] = 10.Ent2.insert("end"
,self.stud_inf.get("Grup")).Ent2 ["state"] =
"disabled".Ent2.pack()=
Tkinter.LabelFrame(self.FRC)["text"] = u"Оценка"["font"]
= all_font.place(relx = 0.42, rely = 0.03, anchor = "w").Ent3 =
Tkinter.Entry(LaFR3).Ent3.insert("end" ,self.stud_inf.get("Mark")).Ent3["width"]
= 10.Ent3 ["state"] = "disabled".Ent3.pack()=
Tkinter.LabelFrame(self.FRC)
LaFR4["text"]
= u"Год защити"
LaFR4["font"] =
all_font.place(relx = 0.5, rely = 0.03, anchor = "w").Ent4 =
Tkinter.Entry(LaFR4).Ent4["width"] = 10.Ent4.insert("end"
,self.stud_inf.get("God_1")).Ent4 ["state"] =
"disabled".Ent4.pack()=
Tkinter.LabelFrame(self.FRC)["text"] = u"Степень"["font"]
= all_font.place(relx = 0.66, rely = 0.03, anchor = "w").Ent123 =
Tkinter.Entry(LaFR5).Ent123["width"] =17.Ent123.insert("end"
,self.stud_inf.get("Stepen")).Ent123 ["state"] =
"disabled".Ent123.pack()_Date_1 = Tkinter.LabelFrame(self.FRC)
LaFR_Date_1["text"]
= u"Данные о студенте"
LaFR_Date_1["font"] =
all_font_Date_1.place(relx = 0.01, rely = 0.12, anchor = "w")_Date_1["width"]
= 924_Date_1["height"] = 85=
Tkinter.LabelFrame(LaFR_Date_1)["text"] = u"Имя"["font"]
= all_font.place(relx = 0.01, rely = 0.5 , anchor = "w").Ent6 =
Tkinter.Entry(LaFR6).Ent6["width"] = 40.Ent6.insert("end"
,self.stud_inf.get("Name_S")).Ent6 ["state"] =
"disabled".Ent6.pack()=
Tkinter.LabelFrame(LaFR_Date_1)["text"] = u"Фамилия"["font"]
= all_font.place(relx = 0.5, rely = 0.5 , anchor = "center").Ent7 =
Tkinter.Entry(LaFR7).Ent7["width"] = 40.Ent7.insert("end"
,self.stud_inf.get("SName_S")).Ent7 ["state"] =
"disabled".Ent7.pack()=
Tkinter.LabelFrame(LaFR_Date_1)["text"] = u"Отчество"["font"]
= all_font.place(relx = 0.99, rely = 0.5 , anchor = "e").Ent8 =
Tkinter.Entry(LaFR8).Ent8["width"] = 40.Ent8.insert("end"
,self.stud_inf.get("LName_S")).Ent8 ["state"] =
"disabled".Ent8.pack()_Date_2 = Tkinter.LabelFrame(self.FRC)
LaFR_Date_2["text"]
= u"Данные о научном руководителе"
LaFR_Date_2["font"] =
all_font_Date_2.place(relx = 0.01, rely = 0.25, anchor =
"w")_Date_2["width"] = 924_Date_2["height"] = 85=
Tkinter.LabelFrame(LaFR_Date_2)["text"] = u"Имя"["font"]
= all_font.place(relx = 0.01, rely = 0.5 , anchor = "w").Ent9 =
Tkinter.Entry(LaFR9).Ent9["width"] = 40.Ent9.insert("end"
,self.stud_inf.get("Name_P")).Ent9 ["state"] = "disabled".Ent9.pack()=
Tkinter.LabelFrame(LaFR_Date_2)["text"] = u"Фамилия"["font"]
= all_font.place(relx = 0.5, rely = 0.5 , anchor = "center").Ent10 =
Tkinter.Entry(LaFR10).Ent10["width"] =
40.Ent10.insert("end" ,self.stud_inf.get("SName_P")).Ent10
["state"] = "disabled".Ent10.pack()=
Tkinter.LabelFrame(LaFR_Date_2)["text"] = u"Отчество"["font"]
= all_font.place(relx = 0.99, rely = 0.5 , anchor = "e").Ent11 =
Tkinter.Entry(LaFR11).Ent11["width"] =
40.Ent11.insert("end" ,self.stud_inf.get("LName_P")).Ent11
["state"] = "disabled".Ent11.pack()_Date_3 =
Tkinter.LabelFrame(self.FRC)
LaFR_Date_3["text"]
= u"Тема дипломного проэкта"
LaFR_Date_3["font"] =
all_font_Date_3.place(relx = 0.01, rely = 0.32, anchor = "nw").ST
=ScrolledText.ScrolledText(LaFR_Date_3,background="white").ST.insert("end"
,self.stud_inf.get("Theme")).ST["width"] =
150.ST["height"] =7.ST["state"] =
"disabled".ST.pack()_Date_4 = Tkinter.LabelFrame(self.FRC)
LaFR_Date_4["text"]
= u"Данные о дипломном проэкте"
LaFR_Date_4["font"] =
all_font_Date_4.place(relx = 0.01, rely = 0.55, anchor =
"w")_Date_4["width"] = 924_Date_4["height"] = 90=
Tkinter.LabelFrame(LaFR_Date_4)
LaFR12["text"]
= u"Количество страниц"
LaFR12["font"] =
all_font.place(relx = 0.01, rely = 0.5 , anchor = "w").Ent12 = Tkinter.Entry(LaFR12).Ent12["width"]
= 32.Ent12.insert("end" ,self.stud_inf.get("page")).Ent12
["state"] = "disabled".Ent12.pack()=
Tkinter.LabelFrame(LaFR_Date_4)
LaFR13["text"]
= u"Количество плакатов"
LaFR13["font"] =
all_font.place(relx = 0.38, rely = 0.5 , anchor = "center").Ent13 =
Tkinter.Entry(LaFR13).Ent13["width"] =
32.Ent13.insert("end" ,self.stud_inf.get("plac")).Ent13
["state"] = "disabled".Ent13.pack()=
Tkinter.LabelFrame(LaFR_Date_4)
LaFR14["text"]
= u"Количество рисунков"
LaFR14["font"] = all_font.place(relx
= 0.52, rely = 0.5 , anchor = "w").Ent14 =
Tkinter.Entry(LaFR14).Ent14["width"] =
32.Ent14.insert("end" ,self.stud_inf.get("pict")).Ent14
["state"] = "disabled".Ent14.pack()= Tkinter.LabelFrame(LaFR_Date_4)
LaFR15["text"]
= u"Количество таблиц"
LaFR15["font"] =
all_font.place(relx = 0.99, rely = 0.5 , anchor = "e").Ent15 =
Tkinter.Entry(LaFR15).Ent15["width"] =
32.Ent15.insert("end" ,self.stud_inf.get("tabl"))
#print
self.stud_inf.get("tabl").Ent15 ["state"] =
"disabled".Ent15.pack()number_1 (event =
None):_n("1")number_2 (event = None):_n("-1")p_n (event =
None):
#print self.number_of_path
#print
string.atoi(event).number_of_path = self.number_of_path +
string.atoi(event)self.number_of_pathself.number_of_path < 0:.number_of_path
= 0::= res_data[self.number_of_path]:.number_of_path = self.number_of_path -
1(self.number_of_path)
But1["text"]
= u"Завершить просмотр"
But1.bind("<Button-1>",otmena)__delattr__
(self, a):.FRC.destroy()
#print
u"ok))))))))))))))))))"__name__ == "__main__":=
Tkinter.Tk().geometry("1024x768+0+0")_font = tkFont.Font()_font
["family"] = "Helvetica"_font ["size"] = 14_font
["weight"] = "normal"_of_path = 2_data = [{'Spec': 'AAG',
'Name_S': 'B', 'Name_P': 'B', 'pict': '3', 'God_1':
'1993',
'tabl': '4', 'Mark': '5', 'SName_P': 'B', 'Theme': 'B\n', 'SName_S': 'B',
'Grup': 'TM-71B', 'LName_P': 'B', 'plac': '2', 'LName_S': 'B', 'Stepen':
u'\u041c\u0430\u0433\u0438\u0441\u0442\u0440', 'page': '1'}, {'Spec':
'AAG', 'Name_S': 'D', 'Name_P': 'D', 'pict': '3', 'God_1': '1993',
'tabl': '5',
'Mark': '5', 'SName_P': 'D', 'Theme': 'D\n', 'SName_S': 'D', 'Grup': 'TM-71B',
'LName_P': 'D', 'plac': '2', 'LName_S': 'D', 'Stepen':
u'\u041c\u0430\u0433\u0438\u0441\u0442\u0440', 'page': '1'}, {'Spec':
'AAG', 'Name_S': 'Q', 'Name_P': 'Q', 'pict': '3', 'God_1': '1993',
'tabl': '4',
'Mark': '4', 'SName_P': 'Q', 'Theme': 'Q\n', 'SName_S': 'Q', 'Grup': 'TM-71B',
'LName_P': 'Q', 'plac': '2',
'LName_S': 'Q', 'Stepen':
u'\u041c\u0430\u0433\u0438\u0441\u0442\u0440',
'page': '1'}]_find(root,all_font,res_data,number_of_path)
root.mainloop()
Направления
улучшения
В
программу можно добавить функцию распознавания орфографических ошибок. Что
существенно поможет при составлении и поиске дипломных проектов.
Можно
добавить «справку», что поможет пользователю детальней узнать о программе и
помочь ему в работе с ней.
Так
же, можно сделать «резервное копирование», что поможет сохранить текущие
введённые данные в отдельную папку.
Вывод
Мы
сделали программу для создания и хранения базы данных о дипломных проектах.
Хранится БД в папке TM_Base и далее в
3х папках бакалавр, магистр или специалист.
Эта
программа может быть полезной и актуальной, так как похожих программ нет, а без
этой программы работать с дипломными проектами довольно трудно.
Список
использованной литературы:
1. Россум
Г. Язык программирования python, 2010.
2. Б.А.
Курс по библиотеке Tkinter языка python, 2008.
. Б.А.
Язык программирования python Ч1-Ч3, 2004.
. Шипман
Д.Д.
Tkinter 8.4. GUI for python, 2011.