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

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

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
КУРСОВАЯ РАБОТА
По курсу информатики
Кафедра «Автомобиле- и тракторостроения»
Разработка базы данных на языке программирования 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х папках бакалавр, магистр или специалист.
Эта программа может быть полезной и актуальной, так как похожих программ нету, а без этой программы работать с дипломными проектами довольно трудно.
Список использованной литературы:
Тип данных, которые хранятся: словарь
Связи с базами:
Используется модулями: 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\