Разработка базы данных на языке программирования Python
К настоящему времени человечеством накоплено поистине гигантское количество информации об объектах и явлениях. Но эта информация не лежит мертвым грузом, она хранится в электронном виде и используется в базах данных. Базы данных — это часть информационных систем — программно-аппаратных комплексов, осуществляющих хранение и обработку огромных информационных массивов. База данных представляет собой… Читать ещё >
Разработка базы данных на языке программирования Python (реферат, курсовая, диплом, контрольная)
Кафедра автомобилеи тракторостроения КУРСОВАЯ РАБОТА По курсу информатики На тему:
Разработка базы данных на языке программирования Python
РЕФЕРАТ Объект разработки — база данных для хранения дипломных проектов.
Цель работы — разработка базы данных на языке программирования Python.
Во время выполнения работы была разработана структура базы данных, были созданы окна, включая технологию переходов, разработан внешний вид окон и в итоге была создана база данных в среде объектно-ориентированного программирования phyton.
База данных была экспериментально опробована, в результате чего было установлено, что существенных ошибок в коде программы не выявлено. Программа может быть успешно применена в работе стат. отделов ВУЗов.
Вступление Структура б/д Окна ввода-вывода информации Технология переходов Листинг с пояснениями Специальное задание Направления улучшения Вывод Список использованной литературы Вступление Актуальность хранения информации в электронном виде заключается в том, что бумажная документация имеет срок годности и портиться со временем. Для долгосрочного хранения информации гораздо удобнее использовать электронные базы данных.
К настоящему времени человечеством накоплено поистине гигантское количество информации об объектах и явлениях. Но эта информация не лежит мертвым грузом, она хранится в электронном виде и используется в базах данных. Базы данных — это часть информационных систем — программно-аппаратных комплексов, осуществляющих хранение и обработку огромных информационных массивов.
База данных представляет собой определенным образом структурированную совокупность данных, совместно хранящихся и обрабатывающихся в соответствии с некоторыми правилами. Как правило, база данных моделирует некоторую предметную область или ее фрагмент. Очень часто в качестве постоянного хранилища информации баз данных выступают файлы.
Программа, производящая манипуляции с информацией в базе данных, называется СУБД (система управления базами данных). Она может осуществлять выборки по различным критериям и выводить запрашиваемую информацию в том виде, который удобен пользователю. Основными составляющими информационных систем, построенных на основе баз данных, являются файлы БД, СУБД и программное обеспечение (клиентские приложения), позволяющие пользователю манипулировать информацией и совершать необходимые для решения его задач действия.
Информация, которая хранится в базе данных, может постоянно пополняться. От того, как часто это делается, зависит ее актуальность. Информацию об объектах также можно изменять и дополнять.
В нашем случае создана база данных для хранения дипломных проектов студентов всех факультетов, групп и специальностей. Для поиска дипломов разработана удобная технология переходов между окнами.
Структура базы данных Исходя из задания была разработана база данных:
Рисунок 1 — Структура базы данных Base_stud.bso
Окна ввода/вывода информации Окно «А»
Окно «А» выполняет функции входа Окно «В»
В этом окне можно добавить диплом или открыть уже готовый. Так же можно настроить параметры шрифта и прочесть о готовой б/д.
Окно «С»
Окно «С» служит для ввода всей информации о студенте, также здесь указуються пути к документу с текстом и папке с изображениями.
В окне «D» выполняется поиск записей по заданным параметрам Окно «D»
Окно «P»
Окно «P» служит для вывода полной информации по студенту
Технология переходов
Листинг с пояснениями база данный диплом 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 («1024×768+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 (««, VHOD)
But2.bind (««, 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 (««, 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 (««)
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 = «250×300+%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.Param2[self.dosm[i]] = self. informatino[ss]
ss = ss + 1
print type (self.informatino[ss])
self.Param2[" Theme" ] = self.ST.get (index1 = 0.0,index2 = «end»)
self.Param2[" Stepen" ] = self. stepen
self.Param2[" 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])
key1 = self. Param2.get («Name_S»)
key2 = self. Param2.get («SName_S»)
key3 = self. Param2.get («LName_S»)
self.key_key = key2 +" _" + key1 +" _" + key3
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.Param2, self. stud_file)
except:
self.stud_file.close ()
self.stud_file = open («Base_stud.bso», «wb»)
pickle.dump (self.Param2, 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 («1024×768+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" ," God1″ ," Name_S" ," SName_S" ," LName_S" ," Nam
e_P" ," SName_P" ," LName_P" ," page" ," plac" ," pict" ," tabl" ]
#Parametry = [" Специальность" ," Группа" ," Оценка" ," Год
защити" ," Имя" ," Фамилия" ," Отчество" ," Имя2″ ," Фамилия2″ ," Отчество2″
" Тема дипломного проэкта" ," Количество страниц" ," Количество
плакатов" ," Количество рисунков" ," Количество таблиц" ]
self.Param2 =
{" Spec" :u" «,» Grup" :u" «,» Mark" :" «,» God1″ :" «,» 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_Date1 = Tkinter. LabelFrame (self.FRC)
LaFR_Date1[" text" ] = u" Данные о студенте"
LaFR_Date1[" font" ] = all_font
LaFR_Date1.place (relx = 0.01, rely = 0.12, anchor = «w»)
LaFR_Date1[" width" ] = 924
LaFR_Date1[" height" ] = 85
LaFR6 = Tkinter. LabelFrame (LaFR_Date1)
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_Date1)
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_Date1)
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_Date2 = Tkinter. LabelFrame (self.FRC)
LaFR_Date2[" text" ] = u" Данные о научном руководителе"
LaFR_Date2[" font" ] = all_font
LaFR_Date2.place (relx = 0.01, rely = 0.25, anchor = «w»)
LaFR_Date2[" width" ] = 924
LaFR_Date2[" height" ] = 85
LaFR9 = Tkinter. LabelFrame (LaFR_Date2)
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_Date2)
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_Date2)
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_Date3 = Tkinter. LabelFrame (self.FRC)
LaFR_Date3[" text" ] = u" Тема дипломного проэкта"
LaFR_Date3[" font" ] = all_font
LaFR_Date3.place (relx = 0.01, rely = 0.32, anchor = «nw»)
self.ST =ScrolledText.ScrolledText (LaFR_Date3, 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_Date4 = Tkinter. LabelFrame (self.FRC)
LaFR_Date4[" text" ] = u" Данные о дипломном проэкте"
LaFR_Date4[" font" ] = all_font
LaFR_Date4.place (relx = 0.01, rely = 0.55, anchor = «w»)
LaFR_Date4[" width" ] = 924
LaFR_Date4[" height" ] = 90
LaFR12 = Tkinter. LabelFrame (LaFR_Date4)
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_Date4)
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_Date4)
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_Date4)
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_Date5 = Tkinter. LabelFrame (self.FRC)
LaFR_Date5[" text" ] = u" Опредиление путей к файлам"
LaFR_Date5[" font" ] = all_font
LaFR_Date5.place (relx = 0.01, rely = 0.63, anchor = «nw»)
LaFR_Date5[" width" ] = 924
LaFR_Date5[" height" ] = 120
def path_pict (event = None):
M = u" Выберете папку с изображениями и нажмите ОК"
path1 = tkFileDialog. askdirectory (title=M)
path_label1 = Tkinter. Label (LaFR_Date5)
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_Date5)
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_Date5)
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_Date5)
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 (««, 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 (««, Seve_inform)
def __delattr__ (self, a):
self.FRC.destroy ()
#print u" ok))))))))))))))))))"
if __name__ == «__main__» :
root = Tkinter. Tk ()
root.geometry («1024×768+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.path2 = self. p + i
os.chdir (self.path2)
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.Label02 [" text" ] = u" ФИО"
self.Label03 [" text" ] = u" Год защиты"
for i in self. baza_vsia:
self.base_for_prosmotr = []
print «2»
self.kol = self. kol + 1
m = i
key1 = m. get («SName_S»)
key2 = m. get («Name_S»)
key3 = m. get («LName_S»)
text_list02 = key1 + «» + key2 + «» + key3
text_list03 = m. get («God1»)
self.Listbox01.insert («end», self. kol)
self.Listbox02.insert («end», text_list02)
self.Listbox03.insert («end», text_list03)
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
key1 = m. get («SName_S»)
key2 = m. get («Name_S»)
key3 = m. get («LName_S»)
text_list02 = key1 + «» + key2 + «» + key3
text_list03 = m. get («God1»)
self.Listbox01.insert («end», self. kol)
self.Listbox02.insert («end», text_list02)
self.Listbox03.insert («end», text_list03)
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_list03 = self. Znachenie_data.get ()
except:
text_list03 = self. Znachenie_data
self.Listbox01.insert («end», self. kol)
self.Listbox02.insert («end», self. vibor_data)
self.Listbox03.insert («end», text_list03)
param_for_poisk = []
param_for_poisk.append (self.parametp_poiska)
param_for_poisk.append (text_list03)
#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 = «God1»
self.vibor_data = event
root.title (u" Найти запись")
#root.geometry («1024×768+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 (««, 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 (««, 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 (««, 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 (««, find_data)
But_Find.bind (««, 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.Listbox01.select_clear («active»)
self.Listbox02.itemconfig (self.pos, bg = «white»)
self.Listbox03.itemconfig (self.pos, bg = «white»)
def Perehod (event = None):
self.Listbox01.activate (self.pos)
self.Listbox01.select_set (self.pos)
self.Listbox02.itemconfig (self.pos, bg = «grey»)
self.Listbox03.itemconfig (self.pos, bg = «grey»)
def Hod (event = None):
self.vibor = string. atoi (self.Listbox01.curselection ()[0])
self.pos = self. vibor
def bind_but (event = None):
## На левую клавишу мыши
self.Frame_Listbox.focus_set ()
try: self. vibor = string. atoi (self.Listbox01.curselection ()[0])
except: pass
try: self. vibor = string. atoi (self.Listbox02.curselection ()[0])
except: pass
try: self. vibor = string. atoi (self.Listbox03.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.Listbox01.curselection ()[0])
except: pass
try: self. vibor = string. atoi (self.Listbox02.curselection ()[0])
except: pass
try: self. vibor = string. atoi (self.Listbox03.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.Listbox01.see (self.prev_nizz)
self.Listbox02.see (self.prev_nizz)
self.Listbox03.see (self.prev_nizz)
self.Listbox01.see (self.prev_verh)
self.Listbox02.see (self.prev_verh)
self.Listbox03.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.Listbox01.see (self.prev_nizz)
self.Listbox02.see (self.prev_nizz)
self.Listbox03.see (self.prev_nizz)
self.Listbox01.see (self.prev_verh)
self.Listbox02.see (self.prev_verh)
self.Listbox03.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)
self.Frame_Listbox.bind (««, Up)
self.Frame_Listbox.bind_all (««, analis)
self.Frame_Listbox.bind (««, Hod)
self.Frame_Listbox.bind (««, Hod)
self.Frame_Listbox.place (relx = 0.5, rely = 0.5, anchor = «center»)
#self.Frame_Listbox.focus_force ()
Label01 = Tkinter. Label (self.Frame_Listbox)
Label01 [" text" ] = u" Номер"
Label01.grid (row = 1, column = 1, sticky = «ensw»)
self.Label01 = Label01
Label02 = Tkinter. Label (self.Frame_Listbox)
Label02 [" text" ] = u" Параметр"
Label02.grid (row = 1, column = 2, sticky = «ensw»)
self.Label02 = Label02
Label03 = Tkinter. Label (self.Frame_Listbox)
Label03 [" text" ] = u" Значение"
Label03.grid (row = 1, column = 3, sticky = «ensw»)
self.Label03 = Label03
self.Scrol_BA = Tkinter. Scrollbar (self.Frame_Listbox)
self.Scrol_BA [" command" ] = self. OnVsb
self.Listbox01 = Tkinter. Listbox (self.Frame_Listbox)
self.Listbox01 [" takefocus" ] = 0
self.Listbox01 [" width" ] = 10
self.Listbox01 [" height" ] = self. h_spis
self.Listbox01 [" yscrollcommand" ] = self. Scrol_BA.set
#self.Listbox01.insert («end», *date)
self.Listbox01.select_set (self.vibor)
self.Listbox01.activate (self.vibor)
self.Listbox01.bind (««, bind_but)
self.Listbox01.bind (««, alt_bind_but)
self.Listbox02 = Tkinter. Listbox (self.Frame_Listbox)
self.Listbox02 [" takefocus" ] = 0
self.Listbox02 [" width" ] = 32
self.Listbox02 [" height" ] = self. h_spis
self.Listbox02 [" yscrollcommand" ] = self. Scrol_BA.set
#self.Listbox02.insert («end», *date_sl)
#self.Listbox02.itemconfig (self.vibor, background = «grey»)
self.Listbox02.bind (««, bind_but)
self.Listbox02.bind (««, alt_bind_but)
self.Listbox03 = Tkinter. Listbox (self.Frame_Listbox)
self.Listbox03 [" takefocus" ] = 0
self.Listbox03 [" width" ] = 40
self.Listbox03 [" height" ] = self. h_spis
self.Listbox03 [" yscrollcommand" ] = self. Scrol_BA.set
#self.Listbox03.insert («end», *date)
#self.Listbox03.itemconfig (self.vibor, background = «grey»)
self.Listbox03.bind (««, bind_but)
self.Listbox03.bind (««, alt_bind_but)
self.Listbox01.grid (row = 2, column = 1, sticky = «ensw»)
self.Listbox02.grid (row = 2, column = 2, sticky = «ensw»)
self.Listbox03.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.Listbox01.select_set (self.vibor)
self.Listbox01.activate (self.vibor)
self.Listbox02.itemconfig (self.vibor, background = «grey»)
self.Listbox03.itemconfig (self.vibor, background = «grey»)
self.Listbox01.see (self.prev_nizz)
self.Listbox02.see (self.prev_nizz)
self.Listbox03.see (self.prev_nizz)
self.Listbox01.see (self.prev_verh)
self.Listbox02.see (self.prev_verh)
self.Listbox03.see (self.prev_verh)
else: ## Переход между окнами — например, возвращение из окна
self.root_comment
self.status = 0
self.Frame_Listbox.bind (««, from_focus_in)
def from_focus_out (event = None): ## При потере фокуса — уходит и
выделение
self.Listbox01.select_clear («active»)
self.vibor = self. pos
for i in range (self.l_spis):
self.Listbox02.itemconfig (i, background = «white»)
self.Listbox03.itemconfig (i, background = «white»)
self.Frame_Listbox.bind (««, from_focus_out)
sroot_widget_create ()
def __delattr__ (self, a):
self.FRD.destroy ()
def OnVsb (self, *args): ## Для одновременного прокручивания
нескольких списков
self.Listbox01.yview (*args)
self.Listbox02.yview (*args)
self.Listbox03.yview (*args)
if __name__ == «__main__» :
root = Tkinter. Tk ()
root.geometry («1024×768+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" ," God1″ ," Name_S" ," SName_S" ," LName_S" ," Nam
e_P" ," SName_P" ," LName_P" ," page" ," plac" ," pict" ," tabl" ]
#Parametry =
[" СпециаР"ьность" ," Р"СЂСѓРїРїР°" ," Оценка" ,
" Р"РѕРґ
Р· ащити" ," Р? РјСЏ" ," ФамиР"РёСЏ" ," Отчество" ," Р
?РјСЏ2″ ," ФамиР"РёСЏ2″ ," Отчество2″ ," Тема
РґРёРїР"РѕРјРЅРѕРіРѕ проэкта" ," РљРѕР"ичество
страниц" ," РљРѕР"ичество
РїР"акатов" ," РљРѕР"ичество
СЂРёСЃСѓРЅРєРѕРІ" ," РљРѕР"ичество табР"РёС†" ]
self.Param2 =
{" Spec" :u" «,» Grup" :u" «,» Mark" :" «,» God1″ :" «,» 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 («God1»))
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_Date1 = Tkinter. LabelFrame (self.FRC)
LaFR_Date1[" text" ] = u" Данные о студенте"
LaFR_Date1[" font" ] = all_font
LaFR_Date1.place (relx = 0.01, rely = 0.12, anchor = «w»)
LaFR_Date1[" width" ] = 924
LaFR_Date1[" height" ] = 85
LaFR6 = Tkinter. LabelFrame (LaFR_Date1)
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_Date1)
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_Date1)
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_Date2 = Tkinter. LabelFrame (self.FRC)
LaFR_Date2[" text" ] = u" Данные о научном руководителе"
LaFR_Date2[" font" ] = all_font
LaFR_Date2.place (relx = 0.01, rely = 0.25, anchor = «w»)
LaFR_Date2[" width" ] = 924
LaFR_Date2[" height" ] = 85
LaFR9 = Tkinter. LabelFrame (LaFR_Date2)
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_Date2)
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_Date2)
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_Date3 = Tkinter. LabelFrame (self.FRC)
LaFR_Date3[" text" ] = u" Тема дипломного проэкта"
LaFR_Date3[" font" ] = all_font
LaFR_Date3.place (relx = 0.01, rely = 0.32, anchor = «nw»)
self.ST =ScrolledText.ScrolledText (LaFR_Date3, 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_Date4 = Tkinter. LabelFrame (self.FRC)
LaFR_Date4[" text" ] = u" Данные о дипломном проэкте"
LaFR_Date4[" font" ] = all_font
LaFR_Date4.place (relx = 0.01, rely = 0.55, anchor = «w»)
LaFR_Date4[" width" ] = 924
LaFR_Date4[" height" ] = 90
LaFR12 = Tkinter. LabelFrame (LaFR_Date4)
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_Date4)
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_Date4)
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_Date4)
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 number1 (event = None):
p_n («1»)
def number2 (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 (««, otmena)
def __delattr__ (self, a):
self.FRC.destroy ()
#print u" ok))))))))))))))))))"
if __name__ == «__main__» :
root = Tkinter. Tk ()
root.geometry («1024×768+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', 'God1':
'1993', 'tabl': '4', 'Mark': '5', 'SName_P': 'B', 'Theme': 'Bn', 'SName_S': 'B',
'Grup': 'TM-71B', 'LName_P': 'B', 'plac': '2', 'LName_S': 'B', 'Stepen':
u’u041cu0430u0433u0438u0441u0442u0440', 'page': '1'}, {'Spec':
'AAG', 'Name_S': 'D', 'Name_P': 'D', 'pict': '3', 'God1': '1993', 'tabl': '5',
'Mark': '5', 'SName_P': 'D', 'Theme': 'Dn', 'SName_S': 'D', 'Grup': 'TM-71B',
'LName_P': 'D', 'plac': '2', 'LName_S': 'D', 'Stepen':
u’u041cu0430u0433u0438u0441u0442u0440', 'page': '1'}, {'Spec':
'AAG', 'Name_S': 'Q', 'Name_P': 'Q', 'pict': '3', 'God1': '1993', 'tabl': '4',