Разработка базы данных на языке программирования Python
Разработка структуры базы данных для хранения дипломных проектов в среде объектно-ориентированного программирования Python. Создание внешнего вида окон ввода-вывода информации, технологии переходов. Листинг программы с пояснениями; направления улучшения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.02.2015 |
Размер файла | 3,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Кафедра автомобиле- и тракторостроения
КУРСОВАЯ РАБОТА
По курсу информатики
На тему:
Разработка базы данных на языке программирования Python
РЕФЕРАТ
Объект разработки - база данных для хранения дипломных проектов.
Цель работы - разработка базы данных на языке программирования Python.
Во время выполнения работы была разработана структура базы данных, были созданы окна, включая технологию переходов, разработан внешний вид окон и в итоге была создана база данных в среде объектно-ориентированного программирования phyton.
База данных была экспериментально опробована, в результате чего было установлено, что существенных ошибок в коде программы не выявлено. Программа может быть успешно применена в работе стат. отделов ВУЗов.
Содержание:
Вступление
Структура б/д
Окна ввода-вывода информации
Технология переходов
Листинг с пояснениями
Специальное задание
Направления улучшения
Вывод
Список использованной литературы
Вступление
Актуальность хранения информации в электронном виде заключается в том, что бумажная документация имеет срок годности и портиться со временем. Для долгосрочного хранения информации гораздо удобнее использовать электронные базы данных.
К настоящему времени человечеством накоплено поистине гигантское количество информации об объектах и явлениях. Но эта информация не лежит мертвым грузом, она хранится в электронном виде и используется в базах данных. Базы данных - это часть информационных систем - программно-аппаратных комплексов, осуществляющих хранение и обработку огромных информационных массивов.
База данных представляет собой определенным образом структурированную совокупность данных, совместно хранящихся и обрабатывающихся в соответствии с некоторыми правилами. Как правило, база данных моделирует некоторую предметную область или ее фрагмент. Очень часто в качестве постоянного хранилища информации баз данных выступают файлы.
Программа, производящая манипуляции с информацией в базе данных, называется СУБД (система управления базами данных). Она может осуществлять выборки по различным критериям и выводить запрашиваемую информацию в том виде, который удобен пользователю. Основными составляющими информационных систем, построенных на основе баз данных, являются файлы БД, СУБД и программное обеспечение (клиентские приложения), позволяющие пользователю манипулировать информацией и совершать необходимые для решения его задач действия.
Информация, которая хранится в базе данных, может постоянно пополняться. От того, как часто это делается, зависит ее актуальность. Информацию об объектах также можно изменять и дополнять.
В нашем случае создана база данных для хранения дипломных проектов студентов всех факультетов, групп и специальностей. Для поиска дипломов разработана удобная технология переходов между окнами.
Структура базы данных
Исходя из задания была разработана база данных:
Рисунок 1 - Структура базы данных Base_stud.bso
Окна ввода/вывода информации
Окно «А»
Окно «А» выполняет функции входа
Окно «В»
В этом окне можно добавить диплом или открыть уже готовый. Так же можно настроить параметры шрифта и прочесть о готовой б/д.
Окно «С»
Окно «С» служит для ввода всей информации о студенте, также здесь указуються пути к документу с текстом и папке с изображениями.
В окне «D» выполняется поиск записей по заданным параметрам
Окно «D»
Окно «P»
Окно «P» служит для вывода полной информации по студенту
Технология переходов
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Листинг с пояснениями
база данный диплом python
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","Nam
e_P","SName_P","LName_P","page","plac","pict","tabl"]
#Parametry = ["Специальность","Группа","Оценка","Год
защити","Имя","Фамилия","Отчество","Имя2","Фамилия2","Отчество2"
,"Тема дипломного проэкта","Количество страниц","Количество
плакатов","Количество рисунков","Количество таблиц"]
self.Param_2 =
{"Spec":u"","Grup":u"","Mark":"","God_1":"","Name_S":"","SName_S":"",
"LName_S":"","Name_P":"","SName_P":"","LName_P":"","page":"","plac"
:"","pict":"","tabl":u"попал ты чувак"}
#Создание полей ввода, первая строка
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","Nam
e_P","SName_P","LName_P","page","plac","pict","tabl"]
#Parametry =
["Специальность","Группа","Оценка",
"Год
защити","Р?РјСЏ","Фамилия","Отчество","Р
?мя2","Фамилия2","Отчество2","Тема
дипломного проэкта","Количество
страниц","Количество
плакатов","Количество
рисунков","Количество таблиц"]
self.Param_2 =
{"Spec":u"","Grup":u"","Mark":"","God_1":"","Name_S":"","SName_S":"",
"LName_S":"","Name_P":"","SName_P":"","LName_P":"","page":"","plac"
:"","pict":"","tabl":""}
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',
Подобные документы
Создание программы для обработки информации об объектах предметной области "Бытовая техника" в среде визуального программирования C++. Иерархия родственных классов. Описание логической структуры программы. Реализация файлового ввода/вывода данных.
курсовая работа [711,4 K], добавлен 27.07.2014Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.
курсовая работа [2,3 M], добавлен 31.01.2016Отличительные особенности языка программирования Python: низкий порог вхождения, минималистичный язык, краткий код, поддержка математических вычислений, большое количество развитых web-фреймворков. Традиционная модель выполнения программ на языке Python.
реферат [51,9 K], добавлен 18.01.2015Особенности программирования аркадных игр в среде Python. Краткая характеристика языка программирования Python, его особенности и синтаксис. Описание компьютерной игры "Танчики" - правила игры, пояснение ключевых строк кода. Демонстрация работы программы.
курсовая работа [160,3 K], добавлен 03.12.2014Программное обеспечение Python и ее основные характеристики, как программной среды. Общие сведения о языке программирования Python. Особенности применения ППП Python (x,y) с использованием его различных вычислительных модулей в учебном процессе.
дипломная работа [2,9 M], добавлен 07.04.2019Понятие и характеристики облачных технологий, модели их развертывания, технологические процессы, аспекты экономики и критика. Язык программирования Python, оценка функциональности, сравнение с аналогами. Управление облаком в Python на примере libcloud.
курсовая работа [43,0 K], добавлен 08.06.2014Этапы развития, особенности и возможности языка программирования Java; происхождение названия. Приложения Sun Microsystems: идеи, примитивные типы. Python - высокоуровневый язык программирования общего назначения: структуры данных, синтаксис и семантика.
реферат [79,0 K], добавлен 23.06.2012Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного программирования в задачах защиты информации: программная реализация на языке С++, а также Turbo Pascal.
курсовая работа [275,9 K], добавлен 22.12.2011Автоматизированные базы данных в учебном процессе. Создание базы данных для МОУ СОШ № 12 с целью помощи в обеспечении централизованного управления, хранения информации об учениках. Требования к программе, условия эксплуатации. Программный код базы данных.
дипломная работа [2,0 M], добавлен 25.03.2014Создание базы данных и СУБД. Структура простейшей базы данных. Особенности языка программирования Турбо Паскаль. Описание типов, констант, переменных, процедур и функций. Описание алгоритма базы данных (для сотрудников ГИБДД), листинг программы.
курсовая работа [26,3 K], добавлен 26.01.2012