У вас вопросы?
У нас ответы:) SamZan.net

Разработка базы данных на языке программирования Python

Работа добавлена на сайт samzan.net: 2016-06-20

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 8.4.2025

                       

КУРСОВАЯ РАБОТА

По курсу информатики

Кафедра «Автомобиле- и тракторостроения»

Разработка базы данных на языке программирования Python.


РЕФЕРАТ

Объект разработки – база данных для хранения дипломных проектов.

Цель работы – разработка базы данных на языке программирования Python.

Во время выполнения работы была разработана структура базы данных, были созданы окна включая технологию переходов, разработан внешний вид окон и в итоге была создана база данных в среде объектно-ориентированного программирования phyton.

        База данных была экспериментально опробована, в результате чего было установлено, что существенных ошибок в коде программы  не выявлено. Программа может быть успешно применена в работе стат. отделов ВУЗов.

Содержание:

Вступление

Структура б/д

Окна ввода-вывода информации

Технология переходов

Листинг с пояснениями

Специальное задание

Направления улучшения

Вывод

Список использованной литературы

Вступление

Актуальность хранения информации в электронном виде заключается в том, что бумажная документация имеет срок годности и портиться со временем. Для долгосрочного хранения информации гораздо удобнее использовать электронные базы данных.

К настоящему времени человечеством накоплено поистине гигантское количество информации об объектах и явлениях. Но эта информация не лежит мертвым грузом, она хранится в электронном виде и используется в базах данных. Базы данных – это часть информационных систем – программно-аппаратных комплексов, осуществляющих хранение и обработку огромных информационных массивов.

База данных представляет собой определенным образом структурированную совокупность данных, совместно хранящихся и обрабатывающихся в соответствии с некоторыми правилами. Как правило, база данных моделирует некоторую предметную область или ее фрагмент. Очень часто в качестве постоянного хранилища информации баз данных выступают файлы.

Программа, производящая манипуляции с информацией в базе данных, называется СУБД (система управления базами данных). Она может осуществлять выборки по различным критериям и выводить запрашиваемую информацию в том виде, который удобен пользователю. Основными составляющими информационных систем, построенных на основе баз данных, являются файлы БД, СУБД и программное обеспечение (клиентские приложения), позволяющие пользователю манипулировать информацией и совершать необходимые для решения его задач действия.

Информация, которая хранится в базе данных, может постоянно пополняться. От того, как часто это делается, зависит ее актуальность. Информацию об объектах также можно изменять и дополнять.

В нашем случае создана база данных для хранения дипломных проектов студентов всех факультетов, групп и специальностей. Для поиска дипломов разработана удобная технология переходов  между окнами.


Структура базы данных

 Исходя из задания была разработана база данных:

Рисунок 1 – Структура базы данных Base_stud.bso

Окна ввода/вывода информации 

Окно «А»:

Окно «А» выполняет функции входа

Окно «В»:

В этом окне можно добавить диплом или открыть уже готовый. Так же можно настроить параметры шрифта и прочесть о готовой б/д.

Окно «С»: 

Окно «С»  служит  для ввода всей информации о студенте, также здесь  указуються пути к документу с текстом и папке с изображениями.

Окно «D»:

В окне  «D»  выполняется поиск  записей по заданным параметрам  

Окно «P»:

Окно «P» служит для вывода полной информации по студенту

Технология переходов

 

Листинг с пояснениями

osnovnoe okno.py

# -*- coding: utf-8 -*-

import Tkinter

import string

import tkMessageBox

import sys

import os

import New_Data

import Font

import Find_Data

import Copy_Rez

import O_Prog

import tkFont

class system:

   def __init__(self, root, all_font):

       self(root, all_font)

   def __call__(self, root, all_font):

       def font(event = None):

           Font.font(root)

       def VHOD (event = None):

           if self.tip_dostupa == u"Студент":

               B()

           else:

               pass

       def B (even = None):

           #if even == u"Студент":

           def close_all_prevision(event = None):

               try:

                   del (self.C.FRC)

                   print u"Окно С закрыто"

               except: pass

               try:

                   del(self.D.FRD)

                   print u"Окно D закрыто"

               except:

                   pass

               try:

                   del(self.E.FRE)

                   print u"Окно E закрыто"

               except:

                   pass

               try:

                   del(self.K)

                   print u"Окно K закрыто"

               except:

                   pass

               try:

                   del(self.O.FRO)

                   print u"Окно O закрыто"

               except:

                   pass

           #Создание окна "Новая запись"

           def Window_C(event = None):

               close_all_prevision()

               self.C= New_Data.new_data(root,all_font)

           #Создание окна "Найти запись"

           def Window_D(event = None):

               close_all_prevision()

               self.D = Find_Data.find_data(root,all_font)

           #Создание окна "Резервное копирование"

           def Window_E (event = None):

               close_all_prevision()

               self.E = Copy_Rez.copy_rez(root,all_font)

           #Создание окна "Шрифты"

           def Window_K(event = None):

               close_all_prevision()

               self.K = Font.font(root,all_font)

           def Window_O(event = None):

               close_all_prevision()

               self.O = O_Prog.o_prog(root,all_font)

           FR.destroy()

           root.geometry("1024x768+0+0")

           root.update()

           root.title(u"База данных дипломных робот студентов ТМ факультета")

           Bar = Tkinter.Menu(root)

           Bar ["font"] = all_font

           Bar["tearoff"] = 0

           Menu1 = Tkinter.Menu(Bar, tearoff = 0 , font = all_font)

           Menu1.add_command(label = u"Новая запись", command = Window_C)

           Menu1.add_command(label = u"Найти запись", command = Window_D)

           Menu1.add_command(label = u"Резервное копирование", command = Window_E)

           Menu1.add_command(label = u"Общая информация")

           Menu1.add_separator()

           Menu1.add_command(label = u"Выход", command=die)

           Vid = Tkinter.Menu(Bar, tearoff = 0 , font = all_font)

           Vid.add_command(label = u"Размер")

           Vid.add_command(label = u"Шрифты",command = Window_K)

           Prog = Tkinter.Menu(Bar, tearoff = 0 , font = all_font)

           Prog.add_command(label = u"Помощь")

           Prog.add_command(label = u"О программе", command = Window_O)

           Bar.add_cascade(label = u"Управление базой", menu = Menu1)

           Bar.add_cascade(label = u"Настройка вида", menu = Vid)

           Bar.add_cascade(label = u"О программе", menu = Prog)

           root.config(menu=Bar)

           root.mainloop()

           #else:

               #pass

#Изминение состояния полей ввода и кнопок

       def var123 (even = None):

           if even == u"Студент":

               Ent1["state"] = "disabled"

               Ent2["state"] = "disabled"

               But2["state"] = "normal"

           else:

               Ent1["state"] = "normal"

               Ent2["state"] = "normal"

               But2["state"] = "normal"

#Закрытие программы

       def die(even = None):

           response = tkMessageBox.askyesno(u"Важно!!!",u"Закрыть базу данных дипломных работ студентов ТМ-факультета?")

           r = response

           if r == 1:

               sys.exit(0)

           else:

               responce.destroy()

       FR = Tkinter.Frame(root)

       FR["width"] = 250

       FR["height"] = 300

       FR.place(relx = 0.5, rely = 0.5, anchor = "center" )

       FR["bg"] = "white"

       FR ["bd"] = "4m"

       FR["relief"] = "groove"

#Меню "Тип доступа"

       def big(event = None):

           MB_NEW["text"] = (NEW_text[event])

           var123(NEW_text[event])

           self.tip_dostupa = NEW_text[event]

       MB_NEW = Tkinter.Menubutton(FR, relief = "raised", justify = "center")

       MB_NEW.place(relx = 0.5, rely = 0.2, anchor = "center")

       MB_NEW.menu = Tkinter.Menu(MB_NEW, tearoff = 0)

       MB_NEW ["menu"] = MB_NEW.menu

       MB_NEW ["bg"] = "grey"

       MB_NEW ["activebackground"] = "white"

       MB_NEW ["width"] = 20

       NEW_text = [u"Администратор", u"Преподаватель", u"Студент"]

       MB_NEW["text"] = (u"Тип доступа")

       NEW = []

       for i in NEW_text:

           NEW.append(i+" "*(20-len(i)))

       MB_NEW.menu.add("cascade", label = NEW[0], command = lambda m=0 :big(m))

       MB_NEW.menu.add("cascade", label = NEW[1], command = lambda m=1 :big(m))

       MB_NEW.menu.add("cascade", label = NEW[2], command = lambda m=2 :big(m))

#Поле ввода "Имя пользователя"

       LaFR1 = Tkinter.LabelFrame(FR)

       LaFR1["text"] = u"Имя пользователя"

       LaFR1.place(relx = 0.5, rely = 0.4, anchor = "center")

       Ent1 = Tkinter.Entry(LaFR1)

       Ent1["width"] = 25

       Ent1["state"] = "disabled"

       Ent1.pack()

       name = Ent1

#Поле ввода "Пароль"

       LaFR2 = Tkinter.LabelFrame(FR)

       LaFR2["text"] = u"Пароль"

       LaFR2.place(relx = 0.5, rely = 0.55, anchor = "center")

       Ent2 = Tkinter.Entry(LaFR2)

       Ent2["width"] = 25

       Ent2["state"] = "disabled"

       Ent2 ["show"] = "*"

       Ent2.pack()

       parol = Ent2

#Кнопка "Вход"

       But2 = Tkinter.Button(FR)

       But2["bg"] = "white"

       But2["bd"] = "1m"

       But2["relief"] = "raised"

       But2["text"] = u"Вход"

       But2["state"] = "disabled"

       But2.place(relx = 0.4, rely = 0.8, anchor = "center")

       But2.bind("<Button-1>",VHOD)

       But2.bind("<Return>", VHOD)

#Кнопка "Выход"

       But1 = Tkinter.Button(FR)

       But1["bg"] = "white"

       But1["bd"] = "1m"

       But1["relief"] = "raised"

       But1.place(relx = 0.2, rely = 0.8, anchor = "center")

       But1["text"] = u"Выход"

       But1.bind("<Button-1>", die)

#Кнопка "Регистрация"

       But3 = Tkinter.Button(FR)

       But3["bg"] = "white"

       But3["bd"] = "1m"

       But3["relief"] = "raised"

       But3.place(relx = 0.7, rely = 0.8, anchor = "center")

       But3["text"] = u"Регистрация"

       But3.bind("<Button-1>")

       root.mainloop()

if __name__ == "__main__":

   root = Tkinter.Tk()

   vysota_vhod = root.winfo_screenheight()

   shyrina_vhod = root.winfo_screenwidth()

   x_vhod = (shyrina_vhod / 2) - 125

   y_vhod =  (vysota_vhod / 2) - 150

   razm_x_y = "250x300+%s+%s"%(x_vhod,y_vhod)

   root.geometry(razm_x_y)

   root.title(u"Вход в базу данных дипломных проэктов

   all_font = tkFont.Font()

   all_font ["family"] = "Helvetica"

   all_font ["size"] = 15

   all_font ["weight"] = "normal"

   system(root,all_font)

New_Data.py

# -*- coding: cp1251 -*-

import Tkinter

import ScrolledText

import tkFont

import os

import string

import pickle

import tkFileDialog

import Image

import ImageTk

#окно "С" - создание новой записи

class new_data:

   def __init__(self, root,all_font):

       self(root,all_font)

   def __call__(self, root,all_font):

       def New_dictonary(event = None):

           Base = {}

           ss = 0

           for i in range(0,13):

               self.Param_2[self.dosm[i]] = self.informatino[ss]

               ss = ss + 1

               print type(self.informatino[ss])

           self.Param_2["Theme"] = self.ST.get(index1 = 0.0,index2 = "end")

           self.Param_2["Stepen"] = self.stepen

           self.Param_2["tabl"] = Ent15.get()

           #print self.ST.get(index1 = 0.0,index2 = "end")

#*******************************************************************************

           #ПРОВЕРКА ПУТЕЙ:

           if os.path.exists("C:\\TM_Base") == 1:

               os.chdir("C:\\TM_Base")

           else:

               os.makedirs("C:\\TM_Base")

               os.chdir("C:\\TM_Base")

           Sohranenie()

       def Sohranenie (event= None):

           def Sohranenie_pict(event = None): #сохранение картинок

               os.chdir(self.path_pict)

               print os.listdir(self.path_pict)

               t =  os.listdir(self.path_pict)

               u = ["C:\\TM_Base\\Spec\\" + self.key_key + "\\",'C:\\TM_Base\\Bakalavr\\' + self.key_key + '\\','C:\\TM_Base\\Magistr\\' + self.key_key + '\\']

               d = u[event]

               for i in t:

                   os.chdir(self.path_pict)

                   open_pict = open(i,"rb")

                   p = open_pict.read()

                   open_pict.close()

                   os.chdir(u[event])

                   stud_pict = open(i ,"wb")

                   stud_pict.write(p)

                   stud_pict.close()

           def Sohranenie_text (event = None):

               u = ["C:\\TM_Base\\Spec\\" + self.key_key + "\\",'C:\\TM_Base\\Bakalavr\\' + self.key_key + '\\','C:\\TM_Base\\Magistr\\' + self.key_key + '\\']

               z = string.split(self.path_pdf,"/")

               try:

                   for i in z:

                       if i.find(".docx") != -1:

                           self.pdf = i

                           print self.pdf

                       elif i.find(".pdf") != -1:

                           self.pdf = i

                           print self.pdf

                       elif i.find(".txt") != -1:

                           self.pdf = i

                           print self.pdf

                       elif i.find(".doc") != -1:

                           self.pdf = i

                           print self.pdf

                       else:

                            pass

                   h = len (self.path_pdf)

                   j = len (self.pdf)

                   l = h - j

                   N = self.path_pdf[0:l]

                   print N

                   os.chdir(N)

                   open_pdf = open(self.pdf,"rb")

                   f = open_pdf.read()

                   open_pdf.close()

                   os.chdir(u[event])

                   stud_pdf = open(self.pdf,"wb")

                   stud_pdf.write(f)

                   stud_pdf.close()

               except:

                   krasavchik_font = tkFont.Font()

                   krasavchik_font ["family"] = "Helvetica"

                   krasavchik_font ["size"] = 30

                   krasavchik_font ["weight"] = "bold"

                   krasavchik_font ["slant"] = "italic"

                   krasavchik = Tkinter.Label(self.FRC)

                   krasavchik["text"] = u"Не верный тип данных!\n Текстовый файл не сохранен!!!"

                   krasavchik["font"] = krasavchik_font

                   krasavchik["bg"] = "red"

                   krasavchik.place(relx = 0.5,rely = 0.6 , anchor = "center")

           def create_folders (event = None):

               #ПРОВЕРКА ПУТЕЙ К ПАПКЕ СПЕЦИАЛИСТ:

               u = ["C:\\TM_Base\\Spec\\",'C:\\TM_Base\\Bakalavr\\','C:\\TM_Base\\Magistr\\']

               if os.path.exists(u[event]) == 1:

                   os.chdir(u[event])

               else:

                   os.makedirs(u[event])

                   os.chdir(u[event])

               key_1 = self.Param_2.get("Name_S")

               key_2 = self.Param_2.get("SName_S")

               key_3 = self.Param_2.get("LName_S")

               self.key_key = key_2 +"_" + key_1 +"_" + key_3

               if os.path.exists(u[event] + self.key_key + "\\") == 1:

                   os.chdir(u[event] + self.key_key + "\\")

                   self.stud_file = open ("Base_stud.bso", "rb") #ОТКРЫВАЕМ ФАЙЛ С ИНФ О СТУДЕНТЕ

               else:

                   os.makedirs(u[event] + self.key_key)

                   os.chdir(u[event] + self.key_key)

                   self.stud_file = open ("Base_stud.bso", "wb") #ОТКРЫВАЕМ ФАЙЛ С ИНФ О СТУДЕНТЕ

               try:

                   pickle.dump(self.Param_2,self.stud_file)

               except:

                   self.stud_file.close()

                   self.stud_file = open ("Base_stud.bso", "wb")

                   pickle.dump(self.Param_2,self.stud_file)

               self.stud_file.close()

               Sohranenie_text(event)

               Sohranenie_pict(event)

           if self.stepen == u"Специалист":

               create_folders(0)

           elif self.stepen == u"Бакалавр":

               create_folders(1)

           else:

               create_folders(2)

#***********************************************************************************************************************

       def otmena(event = None):

           self.FRC.destroy()

       root.title(u"Cоздание новой записи")

       #root.geometry("1024x768+0+0")

       def Seve_inform(event = None):

           entry_get=[]

           for i in Inform:

               if i.get() == '':

                   i["bg"] = "red"

               else:

                   i["bg"] = "white"

                   entry_get.append(i.get())

                   self.informatino = entry_get

                   if len(entry_get) == 14:

                       New_dictonary()

                       krasavchik_font = tkFont.Font()

                       krasavchik_font ["family"] = "Helvetica"

                       krasavchik_font ["size"] = 30

                       krasavchik_font ["weight"] = "bold"

                       krasavchik_font ["slant"] = "italic"

                       krasavchik = Tkinter.Label(self.FRC)

                       krasavchik["text"] = u"Новая запись успешно добавлена"

                       krasavchik["font"] = krasavchik_font

                       krasavchik["bg"] = "yellow"

                       krasavchik.place(relx = 0.5,rely = 0.5 , anchor = "center")

                   else:

                       pass

#Новая рамка для окна "С"

       self.FRC = Tkinter.Frame(root)

       self.FRC["width"] = 1024

       self.FRC["height"] = 768

       self.FRC.place(relx = 0, rely = 0, anchor = "nw" )

       Inform = []

       self.dosm = ["Spec","Grup","Mark","God_1","Name_S","SName_S","LName_S","Name_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"попал ты чувак"}

#Создание полей ввода, первая строка

       LaFR1 = Tkinter.LabelFrame(self.FRC)

       LaFR1["text"] = u"Специальность"

       LaFR1["font"] = all_font

       LaFR1.place(relx = 0.02, rely = 0.03, anchor = "w")

       Ent1 = Tkinter.Entry(LaFR1)

       Ent1["width"] = 40

       Inform.append(Ent1)

       Ent1.pack()

       LaFR2 = Tkinter.LabelFrame(self.FRC)

       LaFR2["text"] = u"Группа"

       LaFR2["font"] = all_font

       LaFR2.place(relx = 0.34, rely = 0.03, anchor = "w")

       Ent2 = Tkinter.Entry(LaFR2)

       Ent2["width"] = 10

       Inform.append(Ent2)

       Ent2.pack()

       LaFR3= Tkinter.LabelFrame(self.FRC)

       LaFR3["text"] = u"Оценка"

       LaFR3["font"] = all_font

       LaFR3.place(relx = 0.42, rely = 0.03, anchor = "w")

       Ent3 = Tkinter.Entry(LaFR3)

       Ent3["width"] = 10

       Inform.append(Ent3)

       Ent3.pack()

       LaFR4 = Tkinter.LabelFrame(self.FRC)

       LaFR4["text"] = u"Год защити"

       LaFR4["font"] = all_font

       LaFR4.place(relx = 0.5, rely = 0.03, anchor = "w")

       Ent4 = Tkinter.Entry(LaFR4)

       Ent4["width"] = 10

       Inform.append(Ent4)

       Ent4.pack()

       LaFR5= Tkinter.LabelFrame(self.FRC)

       LaFR5["text"] = u"Степень"

       LaFR5["font"] = all_font

       LaFR5.place(relx = 0.66, rely = 0.03, anchor = "w")

       def big(event = None):

           MB_NEW["text"] = (NEW_text[event])

           self.stepen = MB_NEW["text"]

           #self.Inform.append(MB_NEW["text"])

       MB_NEW = Tkinter.Menubutton(LaFR5, relief = "raised", justify = "center")

       MB_NEW.menu = Tkinter.Menu(MB_NEW, tearoff = 0)

       MB_NEW ["menu"] = MB_NEW.menu

       MB_NEW ["bg"] = "grey"

       MB_NEW ["activebackground"] = "white"

       MB_NEW ["width"] = 15

       NEW_text = [u"Специалист", u"Бакалавр", u"Магистр", u"  Выбрать  " ]

       MB_NEW["text"] = (NEW_text[3])

       NEW = []

       for i in NEW_text:

           NEW.append(i)

       MB_NEW.menu.add("cascade", label = NEW[0], command = lambda m=0 :big(m))

       MB_NEW.menu.add("cascade", label = NEW[1], command = lambda m=1 :big(m))

       MB_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

       LaFR_Date_1.place(relx = 0.01, rely = 0.12, anchor = "w")

       LaFR_Date_1["width"] = 924

       LaFR_Date_1["height"] = 85

       LaFR6 = Tkinter.LabelFrame(LaFR_Date_1)

       LaFR6["text"] = u"Имя"

       LaFR6["font"] = all_font

       LaFR6.place(relx = 0.01, rely = 0.5 , anchor = "w")

       Ent6 = Tkinter.Entry(LaFR6)

       Ent6["width"] = 40

       Inform.append(Ent6)

       Ent6.pack()

       LaFR7 = Tkinter.LabelFrame(LaFR_Date_1)

       LaFR7["text"] = u"Фамилия"

       LaFR7["font"] = all_font

       LaFR7.place(relx = 0.5, rely = 0.5 , anchor = "center")

       Ent7 = Tkinter.Entry(LaFR7)

       Ent7["width"] = 40

       Inform.append(Ent7)

       Ent7.pack()

       LaFR8 = Tkinter.LabelFrame(LaFR_Date_1)

       LaFR8["text"] = u"Отчество"

       LaFR8["font"] = all_font

       LaFR8.place(relx = 0.99, rely = 0.5 , anchor = "e")

       Ent8 = Tkinter.Entry(LaFR8)

       Ent8["width"] = 40

       Inform.append(Ent8)

       Ent8.pack()

#Создание полей ввода, третья строка (Данные о научном руководителе)

       LaFR_Date_2 = Tkinter.LabelFrame(self.FRC)

       LaFR_Date_2["text"] = u"Данные о научном руководителе"

       LaFR_Date_2["font"] = all_font

       LaFR_Date_2.place(relx = 0.01, rely = 0.25, anchor = "w")

       LaFR_Date_2["width"] = 924

       LaFR_Date_2["height"] = 85

       LaFR9 = Tkinter.LabelFrame(LaFR_Date_2)

       LaFR9["text"] = u"Имя"

       LaFR9["font"] = all_font

       LaFR9.place(relx = 0.01, rely = 0.5 , anchor = "w")

       Ent9 = Tkinter.Entry(LaFR9)

       Ent9["width"] = 40

       Inform.append(Ent9)

       Ent9.pack()

       LaFR10 = Tkinter.LabelFrame(LaFR_Date_2)

       LaFR10["text"] = u"Фамилия"

       LaFR10["font"] = all_font

       LaFR10.place(relx = 0.5, rely = 0.5 , anchor = "center")

       Ent10 = Tkinter.Entry(LaFR10)

       Ent10["width"] = 40

       Inform.append(Ent10)

       Ent10.pack()

       LaFR11 = Tkinter.LabelFrame(LaFR_Date_2)

       LaFR11["text"] = u"Отчество"

       LaFR11["font"] = all_font

       LaFR11.place(relx = 0.99, rely = 0.5 , anchor = "e")

       Ent11 = Tkinter.Entry(LaFR11)

       Ent11["width"] = 40

       Inform.append(Ent11)

       Ent11.pack()

#Поле ввода текста "Тема дипломного проэкта"

       LaFR_Date_3 = Tkinter.LabelFrame(self.FRC)

       LaFR_Date_3["text"] = u"Тема дипломного проэкта"

       LaFR_Date_3["font"] = all_font

       LaFR_Date_3.place(relx = 0.01, rely = 0.32, anchor = "nw")

       self.ST =ScrolledText.ScrolledText(LaFR_Date_3,background="white")

       self.ST["width"] = 150

       self.ST["height"] =7

       #self.self.ND  = ST.get()

       #Inform.append(ST)

       #mm = ST.get()

       #print self.ND

       self.ST.pack()

#Создание полей ввода, третья строка (Данные о дипломном проэкте)

       LaFR_Date_4 = Tkinter.LabelFrame(self.FRC)

       LaFR_Date_4["text"] = u"Данные о дипломном проэкте"

       LaFR_Date_4["font"] = all_font

       LaFR_Date_4.place(relx = 0.01, rely = 0.55, anchor = "w")

       LaFR_Date_4["width"] = 924

       LaFR_Date_4["height"] = 90

       LaFR12 = Tkinter.LabelFrame(LaFR_Date_4)

       LaFR12["text"] = u"Количество страниц"

       LaFR12["font"] = all_font

       LaFR12.place(relx = 0.01, rely = 0.5 , anchor = "w")

       Ent12 = Tkinter.Entry(LaFR12)

       Ent12["width"] = 32

       #Ent12 ["bd"] = 6

       Inform.append(Ent12)

       Ent12.pack()

       LaFR13 = Tkinter.LabelFrame(LaFR_Date_4)

       LaFR13["text"] = u"Количество плакатов"

       LaFR13["font"] = all_font

       LaFR13.place(relx = 0.38, rely = 0.5 , anchor = "center")

       Ent13 = Tkinter.Entry(LaFR13)

       Ent13["width"] = 32

       Inform.append(Ent13)

       Ent13.pack()

       LaFR14 = Tkinter.LabelFrame(LaFR_Date_4)

       LaFR14["text"] = u"Количество рисунков"

       LaFR14["font"] = all_font

       LaFR14.place(relx = 0.52, rely = 0.5 , anchor = "w")

       Ent14 = Tkinter.Entry(LaFR14)

       Ent14["width"] = 32

       Inform.append(Ent14)

       Ent14.pack()

       LaFR15 = Tkinter.LabelFrame(LaFR_Date_4)

       LaFR15["text"] = u"Количество таблиц"

       LaFR15["font"] = all_font

       LaFR15.place(relx = 0.99, rely = 0.5 , anchor = "e")

       Ent15 = Tkinter.Entry(LaFR15)

       Ent15["width"] = 32

       Inform.append(Ent15)

       Ent15.pack()

#Создание полей ввода пути к файлам

       LaFR_Date_5 = Tkinter.LabelFrame(self.FRC)

       LaFR_Date_5["text"] = u"Опредиление путей к файлам"

       LaFR_Date_5["font"] = all_font

       LaFR_Date_5.place(relx = 0.01, rely = 0.63, anchor = "nw")

       LaFR_Date_5["width"] = 924

       LaFR_Date_5["height"] = 120

       def path_pict(event = None):

           M = u"Выберете папку с изображениями и нажмите ОК"

           path1 = tkFileDialog.askdirectory(title=M)

           path_label1 = Tkinter.Label(LaFR_Date_5)

           path_label1.place(relx = 0.65, rely = 0.7, anchor = "center")

           path_label1['borderwidth'] = 5

           path_label1["font"] = all_font

           path_label1["height"] = 2

           path_label1["width"] = 40

           path_label1['text'] = path1

           self.path_pict = path1

       def path_pdf():

           P = u"Выберете файл с текстом"

           path = tkFileDialog.askopenfilename(title=P)

           path_label = Tkinter.Label(LaFR_Date_5)

           path_label.place(relx = 0.65, rely = 0.25, anchor = "center")

           #path_label["bg"] = "red"

           path_label['borderwidth'] = 5

           path_label["font"] = all_font

           path_label["height"] = 2

           path_label["width"] = 40

           path_label['text'] = path

           self.path_pdf = path

#Создание кнопок

       But3 = Tkinter.Button(LaFR_Date_5)

       But3["bg"] = "white"

       But3["bd"] = "1m"

       But3["width"] = 30

       But3 ["font"] = all_font

       But3["relief"] = "raised"

       But3.place(relx = 0.2, rely = 0.25, anchor = "center")

       But3["text"] = u"Путь к документу с текстом"

       But3["command"] = path_pdf

       But4 = Tkinter.Button(LaFR_Date_5)

       But4["width"] = 30

       But4["bg"] = "white"

       But4["bd"] = "1m"

       But4 ["font"] = all_font

       But4["relief"] = "raised"

       But4.place(relx = 0.2, rely = 0.7, anchor = "center")

       But4["text"] = u"Путь к изображениям"

       But4["command"] = path_pict

       But1 = Tkinter.Button(self.FRC)

       But1["bg"] = "white"

       But1["bd"] = "1m"

       But1 ["font"] = all_font

       But1["relief"] = "raised"

       But1.place(relx = 0.25, rely = 0.85, anchor = "center")

       But1["text"] = u"Отмена"

       But1.bind("<Button-1>",otmena)

       But2 = Tkinter.Button(self.FRC)

       But2["bg"] = "white"

       But2 ["font"] = all_font

       But2["bd"] = "1m"

       But2["relief"] = "raised"

       But2.place(relx = 0.75, rely = 0.85, anchor = "center")

       But2["text"] = u"Сохранить"

       But2.bind("<Button-1>", Seve_inform)

   def __delattr__ (self, a):

       self.FRC.destroy()

       #print u"ok))))))))))))))))))"

if __name__ == "__main__":

   root = Tkinter.Tk()

   root.geometry("1024x768+0+0")

   all_font = tkFont.Font()

   all_font ["family"] = "Helvetica"

   all_font ["size"] = 14

   all_font ["weight"] = "normal"

   new_data(root,all_font)

   root.mainloop()

Find_Data.py

# -*- coding: cp1251 -*-

import Tkinter

import ScrolledText

import tkFont

import os

import string

import pickle

import tkFileDialog

import Image

import ImageTk

import preview_find

#окно "D" - поиск данных

class find_data:

   def __init__(self, root, all_font):

       self(root, all_font)

   def __call__(self, root, all_font):

       self.FRD = Tkinter.Frame(root)

       self.FRD["width"] = 1024

       self.FRD["height"] = 768

       self.FRD.place(relx = 0, rely = 0, anchor = "nw" )

       self.FRD.pack()

#************************************************************************************

       def find_data (event = None):

           self.baza_vsia_sort = []

           self.baza_vsia = []

           self.u = ['C:\\TM_Base\\Bakalavr\\',"C:\\TM_Base\\Spec\\",'C:\\TM_Base\\Magistr\\']

           for m in self.u:

               os.chdir(m)

               self.p = m

               #print self.baza_vsia_sort

               #print self.dictonary_find.keys()

               for w in self.dictonary_find.keys():

                   #print self.dictonary_find.get(w)

                   self.folders = []

                   self.baza_vsia_sort

                   if w == "1":

                       folders = os.listdir(m)

                       for i in folders:

                               if i[-4] != '.':

                                   self.folders.append(i)

                       for i in self.folders:

                           self.path_2 = self.p + i

                           os.chdir(self.path_2)

                           base = open ("Base_stud.bso" , "rb")

                           self.k = pickle.load(base)

                           base.close()

                           poisk = self.dictonary_find.get(w)[0]

                           data = self.dictonary_find.get(w)[1]

                           data_sr = self.k.get(poisk)

                           #if data.decode("cp1251") == data_sr:

                           if data == data_sr:

                               self.baza_vsia.append(self.k)

                           #print self.baza_vsia

                   else:

                       #print len(self.baza_vsia)

                       #print "baza vsja"

                       #print self.baza_vsia

                       for i in range(0, len(self.baza_vsia)):

                           b = self.baza_vsia[i]

                           #print b

                           poisk = self.dictonary_find.get(w)[0]

                           data = self.dictonary_find.get(w)[1]

                           data_sr = b.get(poisk)

                           if data == data_sr:

                               self.baza_vsia_sort.append(b)

                           #print "2"

                           #print self.baza_vsia_sort

                       self.baza_vsia = []

           #print self.baza_vsia

           #print self.baza_vsia_sort

       def find_data_tabl(event = None):

           self.dictonary_find.keys()

           self.Frame_Listbox.destroy()

           sroot_widget_create()

           self.kol = 0

           self.vibor = self.kol

           self.Label_02 ["text"] = u"ФИО"

           self.Label_03 ["text"] = u"Год защиты"

           for i in self.baza_vsia:

               self.base_for_prosmotr = []

               print "2"

               self.kol = self.kol + 1

               m = i

               key_1 = m.get("SName_S")

               key_2 = m.get("Name_S")

               key_3 = m.get("LName_S")

               text_list_02 = key_1 + " " + key_2 + " " + key_3

               text_list_03 = m.get("God_1")

               self.Listbox_01.insert("end", self.kol)

               self.Listbox_02.insert("end", text_list_02)

               self.Listbox_03.insert("end", text_list_03)

               self.base_for_prosmotr = self.baza_vsia

           if len(self.baza_vsia_sort[0]) > 0:

               self.base_for_prosmotr = self.baza_vsia_sort

               for i in self.baza_vsia_sort:

                   print u"второй отбор"

                   self.kol = self.kol + 1

                   m = i

                   key_1 = m.get("SName_S")

                   key_2 = m.get("Name_S")

                   key_3 = m.get("LName_S")

                   text_list_02 = key_1 + " " + key_2 + " " + key_3

                   text_list_03 = m.get("God_1")

                   self.Listbox_01.insert("end", self.kol)

                   self.Listbox_02.insert("end", text_list_02)

                   self.Listbox_03.insert("end", text_list_03)

           else:

               print u"параметр поиска только один"

       def die (event = None):

           print self.baza_vsia_sort

           print self.baza_vsia

           self.FRD.destroy()

       self.kol = 0

       self.dictonary_find = {}

       param_for_poisk = []

       def DOBAVIT (event = None):

           self.kol = self.kol + 1

           self.vibor = self.kol

           try:

               text_list_03 = self.Znachenie_data.get()

           except:

               text_list_03 = self.Znachenie_data

           self.Listbox_01.insert("end", self.kol)

           self.Listbox_02.insert("end", self.vibor_data)

           self.Listbox_03.insert("end", text_list_03)

           param_for_poisk = []

           param_for_poisk.append(self.parametp_poiska)

           param_for_poisk.append(text_list_03)

           #print param_for_poisk

           if self.kol == 1:

               ch = "1"

           elif self.kol == 2:

               ch = "2"

           elif self.kol == 3:

               ch = "3"

           elif self.kol == 4:

               ch = "4"

           elif self.kol == 5:

               ch = "5"

           elif self.kol == 6:

               ch = "6"

           self.dictonary_find[ch] = param_for_poisk

           self.l_spis = self.kol

           #print self.dictonary_find

       def preview_inf (event = None):

           print self.base_for_prosmotr

           preview_find.preview_find(root,all_font,self.base_for_prosmotr,event)

       def Clear(event =None):

           self.Frame_Listbox.destroy()

           #print "listbox.destroy"

           self.kol = 0

           self.dictonary_find = {}

           sroot_widget_create()

       def destroy_pole(event = None):## убивает открытие поля

           try:

               self.MB_Spec.destroy()

           except:

               pass

           try:

               self.EntD1.destroy()

           except:

               pass

           try:

               self.MB_Stepen.destroy()

           except:

               pass

           try:

               self.MB_Mark.destroy()

           except:

               pass

           try:

               self.Ent_Name.destroy()

           except:

               pass

           try:

               self.Ent_SName.destroy()

           except:

               pass

           try:

               self.Ent_LName.destroy()

           except:

               pass

           try:

               self.Ent_Kol_page.destroy()

           except:

               pass

           try:

               self.Ent_Kol_pict.destroy()

           except:

               pass

           try:

               self.Ent_Kol_plac.destroy()

           except:

               pass

           try:

               self.Ent_Kol_tabl.destroy()

           except:

               pass

           try:

               self.Ent_Theme.destroy()

           except:

               pass

           try:

               self.God.destroy()

           except:

               pass

       def Spec(event = None):## выбор специальности

           self.EntD1 = Tkinter.Entry(self.FRD)

           self.EntD1.place(relx = 0.5, rely = 0.1, anchor = "w")

           self.EntD1['font'] = all_font

           self.EntD1["width"] = 20

           self.Znachenie_data = self.EntD1

       def Grup(event = None):## поле ввода "Группа"

           self.EntD1 = Tkinter.Entry(self.FRD)

           self.EntD1.place(relx = 0.5, rely = 0.1, anchor = "w")

           self.EntD1['font'] = all_font

           self.EntD1["width"] = 20

           self.Znachenie_data = self.EntD1

       def Mark (event = None): ## поле ввода "Оценка"

           def m (event = None):

               self.MB_Mark["text"] = event

               self.Znachenie_data = event

           self.MB_Mark = Tkinter.Menubutton(self.FRD, relief = "raised", justify = "center")

           self.MB_Mark.place(relx = 0.5, rely = 0.1, anchor = "w")

           self.MB_Mark.menu = Tkinter.Menu(self.MB_Mark, tearoff = 0)

           self.MB_Mark ["menu"] = self.MB_Mark.menu

           self.MB_Mark ["bg"] = "white"

           self.MB_Mark ["font"] = all_font

           self.MB_Mark ["width"] = 20

           self.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))

           self.MB_Mark.menu.add("cascade", label = u"3", command = lambda s=u"3" :m(s))

           self.MB_Mark.menu.add("cascade", label = u"4", command = lambda s=u"4" :m(s))

           self.MB_Mark.menu.add("cascade", label = u"5", command = lambda s=u"5" :m(s))

       def Stepen (event = None): ## поле ввода "степень"

           def st (event = None):

               self.MB_Stepen["text"] = event

               self.Znachenie_data = event

           self.MB_Stepen = Tkinter.Menubutton(self.FRD, relief = "raised", justify = "center")

           self.MB_Stepen.place(relx = 0.5, rely = 0.1, anchor = "w")

           self.MB_Stepen.menu = Tkinter.Menu(self.MB_Stepen, tearoff = 0)

           self.MB_Stepen ["menu"] = self.MB_Stepen.menu

           self.MB_Stepen ["bg"] = "white"

           self.MB_Stepen ["font"] = all_font

           self.MB_Stepen ["width"] = 20

           self.MB_Stepen["text"] = (u"Вибрать степень")

           self.MB_Stepen.menu.add("cascade", label = u"Бакалавр", command = lambda s=u"Бакалавр" :st(s))

           self.MB_Stepen.menu.add("cascade", label = u"Специалист", command = lambda s=u"Специалист" :st(s))

           self.MB_Stepen.menu.add("cascade", label = u"Магистр", command = lambda s=u"Магистр" :st(s))

       def Name(event = None):## поле ввода "Имя"

           self.Ent_Name = Tkinter.Entry(self.FRD)

           self.Ent_Name.place(relx = 0.5, rely = 0.1, anchor = "w")

           self.Ent_Name ['font'] = all_font

           self.Ent_Name["width"] = 30

           self.Znachenie_data = self.Ent_Name

       def SName(event = None):## поле ввода "ФАМИЛИЯ"

           self.Ent_SName = Tkinter.Entry(self.FRD)

           self.Ent_SName.place(relx = 0.5, rely = 0.1, anchor = "w")

           self.Ent_SName ['font'] = all_font

           self.Ent_SName["width"] = 30

           self.Znachenie_data = self.Ent_SName

       def LName(event = None):## поле ввода "ОТЧЕСТВО"

           self.Ent_LName = Tkinter.Entry(self.FRD)

           self.Ent_LName.place(relx = 0.5, rely = 0.1, anchor = "w")

           self.Ent_LName ['font'] = all_font

           self.Ent_LName["width"] = 30

           self.Znachenie_data = self.Ent_LName

       def Kol_page(event = None): ## поле ввода "КОЛИЧЕСТВО СТРАНИЦ"

           self.Ent_Kol_page = Tkinter.Entry(self.FRD)

           self.Ent_Kol_page.place(relx = 0.5, rely = 0.1, anchor = "w")

           self.Ent_Kol_page ['font'] = all_font

           self.Ent_Kol_page["width"] = 30

           self.Znachenie_data = self.Ent_Kol_page

       def Kol_plac(event = None): ## поле ввода "КОЛИЧЕСТВО ПЛАКАТОВ"

           self.Ent_Kol_plac = Tkinter.Entry(self.FRD)

           self.Ent_Kol_plac.place(relx = 0.5, rely = 0.1, anchor = "w")

           self.Ent_Kol_plac ['font'] = all_font

           self.Ent_Kol_plac["width"] = 30

           self.Znachenie_data = self.Ent_Kol_plac

       def Kol_pict(event = None):## поле ввода "КОЛИЧЕСТВО РИСУНКОВ"

           self.Ent_Kol_pict = Tkinter.Entry(self.FRD)

           self.Ent_Kol_pict.place(relx = 0.5, rely = 0.1, anchor = "w")

           self.Ent_Kol_pict ['font'] = all_font

           self.Ent_Kol_pict["width"] = 30

           self.Znachenie_data = self.Ent_Kol_pict

       def Kol_tabl(event = None): ## поле ввода "КОЛИЧЕСТВО ТАБЛИЦ

           self.Ent_Kol_tabl = Tkinter.Entry(self.FRD)

           self.Ent_Kol_tabl.place(relx = 0.5, rely = 0.1, anchor = "w")

           self.Ent_Kol_tabl ['font'] = all_font

           self.Ent_Kol_tabl["width"] = 30

           self.Znachenie_data = self.Ent_Kol_tabl

       def God (event = None):## поле ввода "КОЛИЧЕСТВО РИСУНКОВ"

           self.God = Tkinter.Entry(self.FRD)

           self.God.place(relx = 0.5, rely = 0.1, anchor = "w")

           self.God ['font'] = all_font

           self.God ["width"] = 30

           self.Znachenie_data = self.God

       def Param(event = None):##при выборе параметра открывается новое поле ввода\выбора

           MB_PARAM["text"] = event

           if event == u"Специальность":

               destroy_pole()

               Spec()

               self.parametp_poiska = "Spec"

           elif event == u"Группа":

               destroy_pole()

               Grup()

               self.parametp_poiska = "Grup"

           elif event == u"Оценка":

               destroy_pole()

               Mark()

               self.parametp_poiska = "Mark"

           elif event == u"Степень":

               destroy_pole()

               Stepen()

               self.parametp_poiska = "Stepen"

           elif event == u"Имя":

               destroy_pole()

               Name()

               self.parametp_poiska = "Name_S"

           elif event == u"Фамилия":

               destroy_pole()

               SName()

               self.parametp_poiska = 'SName_S'

           elif event == u"Отчество":

               destroy_pole()

               LName()

               self.parametp_poiska = "LName_S"

           elif event == u"Количество страниц":

               destroy_pole()

               Kol_page()

               self.parametp_poiska = "page"

           elif event == u"Количество плакатов":

               destroy_pole()

               Kol_plac()

               self.parametp_poiska = "plac"

           elif event == u"Количество рисунков":

               destroy_pole()

               Kol_pict()

               self.parametp_poiska = "pict"

           elif event == u"Количество таблиц":

               destroy_pole()

               Kol_tabl()

               self.parametp_poiska = "tabl"

           elif event == u"Год":

               destroy_pole()

               God()

               self.parametp_poiska = "God_1"

           self.vibor_data = event

       root.title(u"Найти запись")

       #root.geometry("1024x768+0+0")

       But_OK = Tkinter.Button(self.FRD)

       But_OK ["text"] = u"Добавить"

       But_OK.place(relx = 0.5, rely = 0.25, anchor = "center")

       But_OK["height"] = 1

       But_OK ["width"] = 20

       But_OK ["font"] = all_font

       But_OK.bind("<Button-1>",DOBAVIT)

       But_Clear = Tkinter.Button(self.FRD)

       But_Clear ["text"] = u"Очистить список"

       But_Clear.place(relx = 0.5, rely = 0.75, anchor = "center")

       But_Clear["height"] = 1

       But_Clear ["width"] = 20

       But_Clear ["font"] = all_font

       But_Clear.bind("<Button-1>", Clear)

       But_Otmena = Tkinter.Button(self.FRD)

       But_Otmena ["text"] = u"Отмена"

       But_Otmena.place(relx = 0.2, rely = 0.85, anchor = "center")

       But_Otmena["height"] = 1

       But_Otmena ["width"] = 25

       But_Otmena ["font"] = all_font

       But_Otmena.bind("<Button-1>", die)

       But_Find = Tkinter.Button(self.FRD)

       But_Find ["text"] = u"Искать"

       But_Find.place(relx = 0.8, rely = 0.85, anchor = "center")

       But_Find["height"] = 1

       But_Find ["width"] = 25

       But_Find ["font"] = all_font

       But_Find.bind("<Button-1>",find_data)

       But_Find.bind("<ButtonRelease>",find_data_tabl)

       # основное меню параметров поиска

       MB_PARAM = Tkinter.Menubutton(self.FRD, relief = "raised", justify = "center")

       MB_PARAM.place(relx = 0.2, rely = 0.1, anchor = "center")

       MB_PARAM.menu = Tkinter.Menu(MB_PARAM, tearoff = 0)

       MB_PARAM ["menu"] = MB_PARAM.menu

       MB_PARAM ["bg"] = "white"

       MB_PARAM ["font"] = all_font

       MB_PARAM ["width"] = 25

       MB_PARAM["text"] = (u"Параметр поиска")

       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))

       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))

       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))

       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))

       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))

       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))

       MB_PARAM.menu.add("cascade", label = u"Год", command = lambda p=u"Год" :Param(p))

       #************************************************************************************

       #Создание таблиц:

       

       def sroot_widget_create(event = None):

           self.status = 0 ## Окон верхнего уровня не существует

           def analis(event = None): ## Опеределяем направление прокручинвания для мышки (MouseWhell)

               try: ## Чтобы для внешнего виджета не работало

                   self.Frame_Listbox.focus_set()

                   Perehod()

                   if event.delta < 0:

                       Down()

                   else:

                       Up()

               except:

                   pass

           def Clear(event = None):

               self.Listbox_01.select_clear("active")

               self.Listbox_02.itemconfig(self.pos, bg = "white")

               self.Listbox_03.itemconfig(self.pos, bg = "white")

           def Perehod(event = None):

               self.Listbox_01.activate(self.pos)

               self.Listbox_01.select_set(self.pos)

               self.Listbox_02.itemconfig(self.pos, bg = "grey")

               self.Listbox_03.itemconfig(self.pos, bg = "grey")

           def Hod(event = None):

               self.vibor = string.atoi(self.Listbox_01.curselection()[0])

               self.pos = self.vibor

           def bind_but(event = None):

               ## На левую клавишу мыши

               self.Frame_Listbox.focus_set()

               try: self.vibor = string.atoi(self.Listbox_01.curselection()[0])

               except: pass

               try: self.vibor = string.atoi(self.Listbox_02.curselection()[0])

               except: pass

               try: self.vibor = string.atoi(self.Listbox_03.curselection()[0])

               except: pass

               self.pos = self.vibor

               #print self.vibor

               preview_inf(self.vibor)

               Perehod()

               from_focus_out()

               ## На левую клавишу мыши

           def alt_bind_but(event = None):

               ## На альт + левая клваиша

               self.Frame_Listbox.focus_set()

               try: self.vibor = string.atoi(self.Listbox_01.curselection()[0])

               except: pass

               try: self.vibor = string.atoi(self.Listbox_02.curselection()[0])

               except: pass

               try: self.vibor = string.atoi(self.Listbox_03.curselection()[0])

               except: pass

               self.pos = self.vibor

               print "alt"

               Perehod()

               from_focus_out()

               ## На альт + левая клваиша

           self.l_spis = 1

           self.vibor = 0

           self.h_spis = 10

           self.pos = 0

           self.prev_verh = 0

           self.prev_nizz = self.h_spis - 1

           def Down(event = None): ## Кнопка вниз - перемещение вниз всех четырех списков

               Clear()

               if self.pos < self.l_spis - 1:

                   self.pos = self.pos + 1

               Perehod()

               ## Прокручиваем списки

               ## Если список находится в границе видимой облафсти - ее верх и низ не меняется

               if self.pos > self.prev_nizz:

                   self.prev_nizz = self.prev_nizz + 1

                   self.prev_verh = self.prev_verh + 1

               if self.pos < self.prev_nizz:

                   pass

               if self.pos == self.prev_nizz:

                   pass

               self.Listbox_01.see(self.prev_nizz)

               self.Listbox_02.see(self.prev_nizz)

               self.Listbox_03.see(self.prev_nizz)

               self.Listbox_01.see(self.prev_verh)

               self.Listbox_02.see(self.prev_verh)

               self.Listbox_03.see(self.prev_verh)

               ## Прокручиваем списки

           def Up(event = None): ## Кнопка вверх - перемещение вверх всех трех списков

               Clear()

               if self.pos > 0:

                   self.pos = self.pos - 1

               Perehod()

               ## Прокручиваем списки

               ## Если список находится в границе видимой облафсти - ее верх и низ не меняется

               if self.pos < self.prev_verh:

                   self.prev_nizz = self.prev_nizz - 1

                   self.prev_verh = self.prev_verh - 1

               if self.pos > self.prev_verh:

                   pass

               if self.pos == self.prev_verh:

                   pass

               self.Listbox_01.see(self.prev_nizz)

               self.Listbox_02.see(self.prev_nizz)

               self.Listbox_03.see(self.prev_nizz)

               self.Listbox_01.see(self.prev_verh)

               self.Listbox_02.see(self.prev_verh)

               self.Listbox_03.see(self.prev_verh)

               ## Прокручиваем списки

           self.Frame_Listbox = Tkinter.LabelFrame(self.FRD)

           self.Frame_Listbox ["text"] = u"Уровни отсеивания"

           self.Frame_Listbox ["labelanchor"] = "n"

           self.Frame_Listbox ["relief"] = "ridge"

           self.Frame_Listbox ["takefocus"] = 1

           self.Frame_Listbox.bind("<Down>", Down)

           self.Frame_Listbox.bind("<Up>", Up)

           self.Frame_Listbox.bind_all("<MouseWheel>", analis)

           self.Frame_Listbox.bind("<KeyRelease-Return>", Hod)

           self.Frame_Listbox.bind("<KeyRelease-space>", Hod)

           self.Frame_Listbox.place(relx = 0.5, rely = 0.5, anchor = "center")

           #self.Frame_Listbox.focus_force()

           Label_01 = Tkinter.Label(self.Frame_Listbox)

           Label_01 ["text"] = u"Номер"

           Label_01.grid(row = 1, column = 1, sticky = "ensw")

           self.Label_01 = Label_01

           Label_02 = Tkinter.Label(self.Frame_Listbox)

           Label_02 ["text"] = u"Параметр"

           Label_02.grid(row = 1, column = 2, sticky = "ensw")

           self.Label_02 = Label_02

           Label_03 = Tkinter.Label(self.Frame_Listbox)

           Label_03 ["text"] = u"Значение"

           Label_03.grid(row = 1, column = 3, sticky = "ensw")

           self.Label_03 = Label_03

           self.Scrol_BA = Tkinter.Scrollbar(self.Frame_Listbox)

           self.Scrol_BA ["command"] = self.OnVsb

           self.Listbox_01 = Tkinter.Listbox(self.Frame_Listbox)

           self.Listbox_01 ["takefocus"] = 0

           self.Listbox_01 ["width"] = 10

           self.Listbox_01 ["height"] = self.h_spis

           self.Listbox_01 ["yscrollcommand"] = self.Scrol_BA.set

           #self.Listbox_01.insert("end", *date)

           self.Listbox_01.select_set(self.vibor)

           self.Listbox_01.activate(self.vibor)

           self.Listbox_01.bind("<ButtonRelease-1>", bind_but)

           self.Listbox_01.bind("<Alt-ButtonRelease-1>", alt_bind_but)

           self.Listbox_02 = Tkinter.Listbox(self.Frame_Listbox)

           self.Listbox_02 ["takefocus"] = 0

           self.Listbox_02 ["width"] = 32

           self.Listbox_02 ["height"] = self.h_spis

           self.Listbox_02 ["yscrollcommand"] = self.Scrol_BA.set

           #self.Listbox_02.insert("end", *date_sl)

           #self.Listbox_02.itemconfig(self.vibor, background = "grey")

           self.Listbox_02.bind("<ButtonRelease-1>", bind_but)

           self.Listbox_02.bind("<Alt-ButtonRelease-1>", alt_bind_but)

           self.Listbox_03 = Tkinter.Listbox(self.Frame_Listbox)

           self.Listbox_03 ["takefocus"] = 0

           self.Listbox_03 ["width"] = 40

           self.Listbox_03 ["height"] = self.h_spis

           self.Listbox_03 ["yscrollcommand"] = self.Scrol_BA.set

           #self.Listbox_03.insert("end", *date)

           #self.Listbox_03.itemconfig(self.vibor, background = "grey")

           self.Listbox_03.bind("<ButtonRelease-1>", bind_but)

           self.Listbox_03.bind("<Alt-ButtonRelease-1>", alt_bind_but)

           self.Listbox_01.grid(row = 2, column = 1, sticky = "ensw")

           self.Listbox_02.grid(row = 2, column = 2, sticky = "ensw")

           self.Listbox_03.grid(row = 2, column = 3, sticky = "ensw")

           self.Scrol_BA.grid(row = 2, column = 6, sticky = "ensw")

           def from_focus_in(event = None): ## При появлении фокуса - выделение на бывший элемент

               if self.status == 0: ## Переход между элементами root, а не окнами...

                   self.Listbox_01.select_set(self.vibor)

                   self.Listbox_01.activate(self.vibor)

                   self.Listbox_02.itemconfig(self.vibor, background = "grey")

                   self.Listbox_03.itemconfig(self.vibor, background = "grey")

                   self.Listbox_01.see(self.prev_nizz)

                   self.Listbox_02.see(self.prev_nizz)

                   self.Listbox_03.see(self.prev_nizz)

                   self.Listbox_01.see(self.prev_verh)

                   self.Listbox_02.see(self.prev_verh)

                   self.Listbox_03.see(self.prev_verh)

               else: ## Переход между окнами - например, возвращение из окна self.root_comment

                   self.status = 0

           self.Frame_Listbox.bind("<FocusIn>", from_focus_in)

           def from_focus_out (event = None): ## При потере фокуса - уходит и выделение

               self.Listbox_01.select_clear("active")

               self.vibor = self.pos

               for i in range(self.l_spis):

                   self.Listbox_02.itemconfig(i, background = "white")

                   self.Listbox_03.itemconfig(i, background = "white")

           self.Frame_Listbox.bind("<FocusOut>", from_focus_out)

       sroot_widget_create()

   def __delattr__ (self, a):

       self.FRD.destroy()

   def OnVsb (self, *args): ## Для одновременного прокручивания нескольких списков

       self.Listbox_01.yview(*args)

       self.Listbox_02.yview(*args)

       self.Listbox_03.yview(*args)

if __name__ == "__main__":

   root = Tkinter.Tk()

   root.geometry("1024x768+0+0")

   all_font = tkFont.Font()

   all_font ["family"] = "Helvetica"

   all_font ["size"] = 18

   all_font ["weight"] = "normal"

   find_data(root,all_font)

   root.mainloop()

preview_find.py

# -*- coding: utf-8-*-

import Tkinter

import ScrolledText

import tkFont

import os

import string

import pickle

import tkFileDialog

import Image

import ImageTk

class preview_find:

   def __init__(self, root,all_font,res_data,number_of_path):

       self(root,all_font,res_data,number_of_path)

   def __call__(self,root,all_font,res_data,number_of_path):

       self.number_of_path = number_of_path

       def otmena(event = None):

           self.FRC.destroy()

       root.title(u"Просмотр результатов поиска")

       self.dosm = ["Spec","Grup","Mark","God_1","Name_S","SName_S","LName_S","Name_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":""}

       self.FRC = Tkinter.Frame(root)

       self.FRC["width"] = 1024

       self.FRC["height"] = 768

       self.FRC.place(relx = 0, rely = 0, anchor = "nw" )

       self.stud_inf = res_data[number_of_path]

      

       LaFR1 = Tkinter.LabelFrame(self.FRC)

       LaFR1["text"] = u"Специальность"

       LaFR1["font"] = all_font

       LaFR1.place(relx = 0.02, rely = 0.03, anchor = "w")

       self.Ent1 = Tkinter.Entry(LaFR1)

       self.Ent1["width"] = 40

       self.Ent1.insert( "end" ,self.stud_inf.get("Spec"))

       self.Ent1 ["state"] = "disabled"

       self.Ent1.pack()

       LaFR2 = Tkinter.LabelFrame(self.FRC)

       LaFR2["text"] = u"Группа"

       LaFR2["font"] = all_font

       LaFR2.place(relx = 0.34, rely = 0.03, anchor = "w")

       self.Ent2 = Tkinter.Entry(LaFR2)

       self.Ent2["width"] = 10

       self.Ent2.insert("end" ,self.stud_inf.get("Grup"))

       self.Ent2 ["state"] = "disabled"

       self.Ent2.pack()

       LaFR3= Tkinter.LabelFrame(self.FRC)

       LaFR3["text"] = u"Оценка"

       LaFR3["font"] = all_font

       LaFR3.place(relx = 0.42, rely = 0.03, anchor = "w")

       self.Ent3 = Tkinter.Entry(LaFR3)

       self.Ent3.insert("end" ,self.stud_inf.get("Mark"))

       self.Ent3["width"] = 10

       self.Ent3 ["state"] = "disabled"

       self.Ent3.pack()

       LaFR4 = Tkinter.LabelFrame(self.FRC)

       LaFR4["text"] = u"Год защити"

       LaFR4["font"] = all_font

       LaFR4.place(relx = 0.5, rely = 0.03, anchor = "w")

       self.Ent4 = Tkinter.Entry(LaFR4)

       self.Ent4["width"] = 10

       self.Ent4.insert("end" ,self.stud_inf.get("God_1"))

       self.Ent4 ["state"] = "disabled"

       self.Ent4.pack()

       LaFR5= Tkinter.LabelFrame(self.FRC)

       LaFR5["text"] = u"Степень"

       LaFR5["font"] = all_font

       LaFR5.place(relx = 0.66, rely = 0.03, anchor = "w")

       self.Ent123 = Tkinter.Entry(LaFR5)

       self.Ent123["width"] =17

       self.Ent123.insert("end" ,self.stud_inf.get("Stepen"))

       self.Ent123 ["state"] = "disabled"

       self.Ent123.pack()

       LaFR_Date_1 = Tkinter.LabelFrame(self.FRC)

       LaFR_Date_1["text"] = u"Данные о студенте"

       LaFR_Date_1["font"] = all_font

       LaFR_Date_1.place(relx = 0.01, rely = 0.12, anchor = "w")

       LaFR_Date_1["width"] = 924

       LaFR_Date_1["height"] = 85

       LaFR6 = Tkinter.LabelFrame(LaFR_Date_1)

       LaFR6["text"] = u"Имя"

       LaFR6["font"] = all_font

       LaFR6.place(relx = 0.01, rely = 0.5 , anchor = "w")

       self.Ent6 = Tkinter.Entry(LaFR6)

       self.Ent6["width"] = 40

       self.Ent6.insert("end" ,self.stud_inf.get("Name_S"))

       self.Ent6 ["state"] = "disabled"

       self.Ent6.pack()

       LaFR7 = Tkinter.LabelFrame(LaFR_Date_1)

       LaFR7["text"] = u"Фамилия"

       LaFR7["font"] = all_font

       LaFR7.place(relx = 0.5, rely = 0.5 , anchor = "center")

       self.Ent7 = Tkinter.Entry(LaFR7)

       self.Ent7["width"] = 40

       self.Ent7.insert("end" ,self.stud_inf.get("SName_S"))

       self.Ent7 ["state"] = "disabled"

       self.Ent7.pack()

       LaFR8 = Tkinter.LabelFrame(LaFR_Date_1)

       LaFR8["text"] = u"Отчество"

       LaFR8["font"] = all_font

       LaFR8.place(relx = 0.99, rely = 0.5 , anchor = "e")

       self.Ent8 = Tkinter.Entry(LaFR8)

       self.Ent8["width"] = 40

       self.Ent8.insert("end" ,self.stud_inf.get("LName_S"))

       self.Ent8 ["state"] = "disabled"

       self.Ent8.pack()

       LaFR_Date_2 = Tkinter.LabelFrame(self.FRC)

       LaFR_Date_2["text"] = u"Данные о научном руководителе"

       LaFR_Date_2["font"] = all_font

       LaFR_Date_2.place(relx = 0.01, rely = 0.25, anchor = "w")

       LaFR_Date_2["width"] = 924

       LaFR_Date_2["height"] = 85

       LaFR9 = Tkinter.LabelFrame(LaFR_Date_2)

       LaFR9["text"] = u"Имя"

       LaFR9["font"] = all_font

       LaFR9.place(relx = 0.01, rely = 0.5 , anchor = "w")

       self.Ent9 = Tkinter.Entry(LaFR9)

       self.Ent9["width"] = 40

       self.Ent9.insert("end" ,self.stud_inf.get("Name_P"))

       self.Ent9 ["state"] = "disabled"

       self.Ent9.pack()

       LaFR10 = Tkinter.LabelFrame(LaFR_Date_2)

       LaFR10["text"] = u"Фамилия"

       LaFR10["font"] = all_font

       LaFR10.place(relx = 0.5, rely = 0.5 , anchor = "center")

       self.Ent10 = Tkinter.Entry(LaFR10)

       self.Ent10["width"] = 40

       self.Ent10.insert("end" ,self.stud_inf.get("SName_P"))

       self.Ent10 ["state"] = "disabled"

       self.Ent10.pack()

       LaFR11 = Tkinter.LabelFrame(LaFR_Date_2)

       LaFR11["text"] = u"Отчество"

       LaFR11["font"] = all_font

       LaFR11.place(relx = 0.99, rely = 0.5 , anchor = "e")

       self.Ent11 = Tkinter.Entry(LaFR11)

       self.Ent11["width"] = 40

       self.Ent11.insert("end" ,self.stud_inf.get("LName_P"))

       self.Ent11 ["state"] = "disabled"

       self.Ent11.pack()

       LaFR_Date_3 = Tkinter.LabelFrame(self.FRC)

       LaFR_Date_3["text"] = u"Тема дипломного проэкта"

       LaFR_Date_3["font"] = all_font

       LaFR_Date_3.place(relx = 0.01, rely = 0.32, anchor = "nw")

       self.ST =ScrolledText.ScrolledText(LaFR_Date_3,background="white")

       self.ST.insert("end" ,self.stud_inf.get("Theme"))

       self.ST["width"] = 150

       self.ST["height"] =7

       self.ST["state"] = "disabled"

       self.ST.pack()

       LaFR_Date_4 = Tkinter.LabelFrame(self.FRC)

       LaFR_Date_4["text"] = u"Данные о дипломном проэкте"

       LaFR_Date_4["font"] = all_font

       LaFR_Date_4.place(relx = 0.01, rely = 0.55, anchor = "w")

       LaFR_Date_4["width"] = 924

       LaFR_Date_4["height"] = 90

       LaFR12 = Tkinter.LabelFrame(LaFR_Date_4)

       LaFR12["text"] = u"Количество страниц"

       LaFR12["font"] = all_font

       LaFR12.place(relx = 0.01, rely = 0.5 , anchor = "w")

       self.Ent12 = Tkinter.Entry(LaFR12)

       self.Ent12["width"] = 32

       self.Ent12.insert("end" ,self.stud_inf.get("page"))

       self.Ent12 ["state"] = "disabled"

       self.Ent12.pack()

       LaFR13 = Tkinter.LabelFrame(LaFR_Date_4)

       LaFR13["text"] = u"Количество плакатов"

       LaFR13["font"] = all_font

       LaFR13.place(relx = 0.38, rely = 0.5 , anchor = "center")

       self.Ent13 = Tkinter.Entry(LaFR13)

       self.Ent13["width"] = 32

       self.Ent13.insert("end" ,self.stud_inf.get("plac"))

       self.Ent13 ["state"] = "disabled"

       self.Ent13.pack()

       LaFR14 = Tkinter.LabelFrame(LaFR_Date_4)

       LaFR14["text"] = u"Количество рисунков"

       LaFR14["font"] = all_font

       LaFR14.place(relx = 0.52, rely = 0.5 , anchor = "w")

       self.Ent14 = Tkinter.Entry(LaFR14)

       self.Ent14["width"] = 32

       self.Ent14.insert("end" ,self.stud_inf.get("pict"))

       self.Ent14 ["state"] = "disabled"

       self.Ent14.pack()

       LaFR15 = Tkinter.LabelFrame(LaFR_Date_4)

       LaFR15["text"] = u"Количество таблиц"

       LaFR15["font"] = all_font

       LaFR15.place(relx = 0.99, rely = 0.5 , anchor = "e")

       self.Ent15 = Tkinter.Entry(LaFR15)

       self.Ent15["width"] = 32

       self.Ent15.insert("end" ,self.stud_inf.get("tabl"))

       #print self.stud_inf.get("tabl")

       self.Ent15 ["state"] = "disabled"

       self.Ent15.pack()

       def number_1 (event = None):

           p_n("1")

       def number_2 (event = None):

           p_n("-1")

       def p_n (event = None):

           #print self.number_of_path

           #print string.atoi(event)

           self.number_of_path = self.number_of_path   + string.atoi(event)

           print self.number_of_path

           if self.number_of_path < 0:

               self.number_of_path = 0

           else:

               try:

                   m = res_data[self.number_of_path]

               except:

                   self.number_of_path = self.number_of_path - 1

           inform(self.number_of_path)

       #Создание РєРЅРѕРїРѕРє

       But1 = Tkinter.Button(self.FRC)

       But1["bg"] = "white"

       But1["bd"] = "1m"

       But1 ["font"] = all_font

       But1["relief"] = "raised"

       But1.place(relx = 0.5, rely = 0.85, anchor = "center")

       But1["text"] = u"Завершить просмотр"

       But1.bind("<Button-1>",otmena)

   def __delattr__ (self, a):

       self.FRC.destroy()

       #print u"ok))))))))))))))))))"

if __name__ == "__main__":

   root = Tkinter.Tk()

   root.geometry("1024x768+0+0")

   all_font = tkFont.Font()

   all_font ["family"] = "Helvetica"

   all_font ["size"] = 14

   all_font ["weight"] = "normal"

   number_of_path = 2

   res_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'}]

   preview_find(root,all_font,res_data,number_of_path)

   root.mainloop()

Направления улучшения.

- в программу можно добавить функцию распознавания орфографических ошибок. Что существенно поможет при составлении и поиске дипломных проектов.

- можно добавить «справку», что поможет пользователю детальней узнать о программе и помочь ему в работе с ней.

- так же, можно сделать «резервное копирование», что поможет сохранить текущие введённые данные в отдельную папку.


Вывод

Мы сделали программу для создания и хранения базы данных о дипломных проектах. Хранится  БД в папке TM_Base и далее в 3х папках бакалавр, магистр или специалист.

Эта программа может быть полезной и актуальной, так как похожих программ нету, а без этой программы работать с дипломными проектами довольно трудно.


Список использованной литературы:

  1.  Россум Г. Язык программирования python, 2010.
  2.  Б.А. Курс по библиотеке Tkinter языка python, 2008.
  3.  Б.А. Язык программирования python Ч1-Ч3, 2004.
  4.  Шипман Д.Д. Tkinter 8.4. GUI for python, 2011.


Тип данных, которые хранятся
: словарь

Связи с базами: 

Используется модулями: Find_Data.py

Пример хранения:

{'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': 'Magistr', 'page': '1'}

Данные:

'Spec' – специальность

'Stepen' – степень

''Grup' – группа

'God_1' – год защиты

'Mark' – оценка

'Name_S' – имя студента

'Name_P' – имя научного руководителя

'SName_P' – фамилия научного руководителя

'SName_Sфамилия студента

'LName_P' – отчество  научного руководителя

'LName_S' – отчество студента

'Theme' – тема дипломного проекта

'page' – количество страниц

'pict' – количество рисунков

'tabl' – количество таблиц

'plac' – количество плакатов

Base_stud.bso

Спецификация: Хранение полной информации о студенте

Путь базы: C:\TM_Base\Stepen\SName + Name + LName\




1. Тема Формирование торговой и ассортиментной политики аптечных учреждений
2. голубое в нескольких местах покрытое почти белыми дорожками штиля
3. Реферат- Монашество
4. на тему- Аудит операцій по руху грошових коштів в касі і на поточному рахункуrdquo;
5. Облік і аудит для студентів заочної форми навчання Затверджено на засіданні методичної ком
6. Albrecht Durer
7. это то великое достижение которое по праву относят на свой счет пять странпобедительниц во Второй Мировой
8. тема Применение гражданского законодательства
9. этапы развития информационного общества Первая информационная революция была связана с изобретени
10. Реферат- Технологии переплетных процессов