Добавлено взамиодействие с базой данных

This commit is contained in:
danamir
2018-11-10 15:27:35 +03:00
parent 53803199b0
commit bdc688a4ca
9 changed files with 21 additions and 2239 deletions

View File

@@ -2,3 +2,10 @@ from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine("sqlite:///db/odd.db", echo=True)
Session = sessionmaker(bind=engine)
Base = declarative_base()
Base.metadata.create_all(engine)

BIN
db/odd.db Normal file

Binary file not shown.

View File

@@ -1,83 +0,0 @@
import wx
class MainFramePanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 500),
style=wx.FULLSCREEN_NOBORDER)
self.frame = parent
self.Bind(wx.EVT_PAINT, self.onPaint)
bSizer2 = wx.BoxSizer(wx.VERTICAL)
self.imgMaxSize = 200
self.lbl_zag_page2 = wx.StaticText(self, wx.ID_ANY, u"Схема перекрёстка и транаспортных потоков на нём",
wx.DefaultPosition, wx.DefaultSize, 0)
self.lbl_zag_page2.Wrap(-1)
bSizer2.Add(self.lbl_zag_page2, 0, wx.ALIGN_CENTER | wx.ALL, 5)
fgSizer2 = wx.FlexGridSizer(3, 2, 0, 0)
fgSizer2.SetFlexibleDirection(wx.BOTH)
fgSizer2.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
self.lbl_shema = wx.StaticText(self, wx.ID_ANY, u" Схема перекрёстка", wx.DefaultPosition, wx.DefaultSize, 0)
self.lbl_shema.Wrap(-1)
fgSizer2.Add(self.lbl_shema, 0, wx.ALL, 5)
self.lbl_trpotok = wx.StaticText(self, wx.ID_ANY, u"Картограмма транаспортных потоков", wx.DefaultPosition, wx.DefaultSize, 0)
self.lbl_trpotok.Wrap(-1)
fgSizer2.Add(self.lbl_trpotok, 0, wx.ALL, 5)
self.shema_perekr = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap(u"src/shema_01.jpg", wx.BITMAP_TYPE_ANY))
fgSizer2.Add(self.shema_perekr, 1, wx.ALL | wx.ALIGN_RIGHT, 5)
kartogramm_scaled = wx.Image(u"src/kartogramma_perekrestka.gif").Scale(400,500).ConvertToBitmap()
self.kartogramma = wx.StaticBitmap(self, wx.ID_ANY, kartogramm_scaled)
fgSizer2.Add(self.kartogramma, 1, wx.ALIGN_RIGHT | wx.EXPAND, 5)
bSizer2.Add(fgSizer2, 1, wx.EXPAND, 5)
self.btn_page3 = wx.Button(self, wx.ID_ANY, u"Далее", wx.DefaultPosition, wx.DefaultSize, 0)
bSizer2.Add(self.btn_page3, 0, wx.ALL | wx.ALIGN_RIGHT, 5)
self.SetSizer(bSizer2)
self.Layout()
# Connect Events
self.btn_page3.Bind(wx.EVT_BUTTON, self.go_page3)
def onPaint(self, event):
dc = wx.PaintDC(self)
dc.Clear()
x, y = self.GetSize()
newx =200
newy=200
x = newx
y = newy
#shema_perekr = self.shema_perekr.Scale()
# Virtual event handlers, overide them in your derived class
def go_page3(self, event):
event.Skip()
def run_page(self):
app = wx.App()
frame = MainFrame(None)
frame.Show()
app.MainLoop()
class MainFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition,
size=wx.Size(500, 500), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
self.Centre(wx.BOTH)
self.Maximize(True)
panel = MainFramePanel(self)
if __name__ == '__main__':
MainFramePanel.run_page(None)

File diff suppressed because it is too large Load Diff

View File

@@ -1,187 +0,0 @@
# -*- coding: utf-8 -*-
###########################################################################
## Python code generated with wxFormBuilder (version Jan 25 2018)
## http://www.wxformbuilder.org/
##
## PLEASE DO *NOT* EDIT THIS FILE!
###########################################################################
import wx
import wx.xrc
###########################################################################
## Class MainFrame
###########################################################################
class MainFrame ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,500 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
self.Centre( wx.BOTH )
def __del__( self ):
pass
###########################################################################
## Class MainFramePanel
###########################################################################
class MainFramePanel ( wx.Panel ):
def __init__( self, parent ):
wx.Panel.__init__ ( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 500,500 ), style = wx.TAB_TRAVERSAL )
bSizer1 = wx.BoxSizer( wx.VERTICAL )
self.lbl_kaf = wx.StaticText( self, wx.ID_ANY, u"Кафедра «Организация и безопасность движения»", wx.DefaultPosition, wx.DefaultSize, 0 )
self.lbl_kaf.Wrap( -1 )
bSizer1.Add( self.lbl_kaf, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
self.lbl_NameProg = wx.StaticText( self, wx.ID_ANY, u"Расчёт цикла светофорного регулирования на перекрёстке\n", wx.DefaultPosition, wx.DefaultSize, 0 )
self.lbl_NameProg.Wrap( -1 )
bSizer1.Add( self.lbl_NameProg, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
self.lbl_predstv = wx.StaticText( self, wx.ID_ANY, u"Предстваьтесь", wx.DefaultPosition, wx.DefaultSize, 0 )
self.lbl_predstv.Wrap( -1 )
bSizer1.Add( self.lbl_predstv, 0, wx.ALL, 5 )
fgSizer1 = wx.FlexGridSizer( 0, 2, 0, 0 )
fgSizer1.SetFlexibleDirection( wx.BOTH )
fgSizer1.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )
self.lbl_name = wx.StaticText( self, wx.ID_ANY, u"Имя", wx.DefaultPosition, wx.DefaultSize, 0 )
self.lbl_name.Wrap( -1 )
fgSizer1.Add( self.lbl_name, 0, wx.ALL, 5 )
self.inpt_name = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
fgSizer1.Add( self.inpt_name, 0, wx.ALL, 5 )
self.lbl_familia = wx.StaticText( self, wx.ID_ANY, u"Фамилия", wx.DefaultPosition, wx.DefaultSize, 0 )
self.lbl_familia.Wrap( -1 )
fgSizer1.Add( self.lbl_familia, 0, wx.ALL, 5 )
self.inpt_familia = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
fgSizer1.Add( self.inpt_familia, 0, wx.ALL, 5 )
self.lbl_group = wx.StaticText( self, wx.ID_ANY, u"Группа", wx.DefaultPosition, wx.DefaultSize, 0 )
self.lbl_group.Wrap( -1 )
fgSizer1.Add( self.lbl_group, 0, wx.ALL, 5 )
self.inpt_group = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
fgSizer1.Add( self.inpt_group, 0, wx.ALL, 5 )
self.lbl_zachetka = wx.StaticText( self, wx.ID_ANY, u"№ Зачётной книжки", wx.DefaultPosition, wx.DefaultSize, 0 )
self.lbl_zachetka.Wrap( -1 )
fgSizer1.Add( self.lbl_zachetka, 0, wx.ALL, 5 )
self.m_textCtrl5 = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
fgSizer1.Add( self.m_textCtrl5, 0, wx.ALL, 5 )
bSizer1.Add( fgSizer1, 1, wx.EXPAND, 5 )
gSizer1 = wx.GridSizer( 0, 2, 0, 0 )
self.btn_settongs = wx.Button( self, wx.ID_ANY, u"Настройки", wx.DefaultPosition, wx.DefaultSize, 0 )
gSizer1.Add( self.btn_settongs, 0, wx.ALIGN_BOTTOM|wx.ALL, 5 )
self.btn_page2 = wx.Button( self, wx.ID_ANY, u"Далее", wx.DefaultPosition, wx.DefaultSize, 0 )
gSizer1.Add( self.btn_page2, 0, wx.ALIGN_BOTTOM|wx.ALIGN_RIGHT|wx.ALL, 5 )
bSizer1.Add( gSizer1, 1, wx.EXPAND, 5 )
self.SetSizer( bSizer1 )
self.Layout()
def __del__( self ):
pass
###########################################################################
## Class MyFrame4
###########################################################################
class MyFrame4 ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,500 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
self.Centre( wx.BOTH )
def __del__( self ):
pass
###########################################################################
## Class MyPanel5
###########################################################################
class MyPanel5 ( wx.Panel ):
def __init__( self, parent ):
wx.Panel.__init__ ( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 500,500 ), style = wx.TAB_TRAVERSAL )
bSizer2 = wx.BoxSizer( wx.VERTICAL )
self.lbl_zag_page2 = wx.StaticText( self, wx.ID_ANY, u"Схема перекрёстка и транаспортных потоков на нём", wx.DefaultPosition, wx.DefaultSize, 0 )
self.lbl_zag_page2.Wrap( -1 )
bSizer2.Add( self.lbl_zag_page2, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
fgSizer2 = wx.FlexGridSizer( 3, 2, 0, 0 )
fgSizer2.SetFlexibleDirection( wx.BOTH )
fgSizer2.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )
self.lbl_shema = wx.StaticText( self, wx.ID_ANY, u" Схема перекрёстка", wx.DefaultPosition, wx.DefaultSize, 0 )
self.lbl_shema.Wrap( -1 )
fgSizer2.Add( self.lbl_shema, 0, wx.ALL, 5 )
self.lbl_trpotok = wx.StaticText( self, wx.ID_ANY, u"Транспортные потоки", wx.DefaultPosition, wx.DefaultSize, 0 )
self.lbl_trpotok.Wrap( -1 )
fgSizer2.Add( self.lbl_trpotok, 0, wx.ALL, 5 )
self.m_bitmap1 = wx.StaticBitmap( self, wx.ID_ANY, wx.Bitmap( u"../../odd_perekr/shema_01.jpg", wx.BITMAP_TYPE_ANY ), wx.DefaultPosition, wx.Size( 200,200 ), 0 )
self.m_bitmap1.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOW ) )
self.m_bitmap1.SetMinSize( wx.Size( 200,200 ) )
self.m_bitmap1.SetMaxSize( wx.Size( 200,200 ) )
fgSizer2.Add( self.m_bitmap1, 1, wx.ALL|wx.ALIGN_RIGHT, 5 )
self.m_bitmap2 = wx.StaticBitmap( self, wx.ID_ANY, wx.Bitmap( u"../../odd_perekr/kartogramma_perekrestka.gif", wx.BITMAP_TYPE_ANY ), wx.DefaultPosition, wx.Size( 200,200 ), 0 )
self.m_bitmap2.SetMinSize( wx.Size( 200,200 ) )
self.m_bitmap2.SetMaxSize( wx.Size( 200,200 ) )
fgSizer2.Add( self.m_bitmap2, 1, wx.ALIGN_RIGHT|wx.EXPAND, 5 )
bSizer2.Add( fgSizer2, 1, wx.EXPAND, 5 )
self.btn_page3 = wx.Button( self, wx.ID_ANY, u"Далее", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer2.Add( self.btn_page3, 0, wx.ALL|wx.ALIGN_RIGHT, 5 )
self.SetSizer( bSizer2 )
self.Layout()
# Connect Events
self.btn_page3.Bind( wx.EVT_BUTTON, self.go_page3 )
def __del__( self ):
pass
# Virtual event handlers, overide them in your derived class
def go_page3( self, event ):
event.Skip()

26
main.py
View File

@@ -1,9 +1,9 @@
# -*- coding: utf-8 -*-
import wx
from models import Student, Session
from models import Student
from sqlalchemy import exists
from base import Session
new_session = Session()
class MainFramePanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 500),
@@ -81,12 +81,9 @@ class MainFramePanel(wx.Panel):
def go_page2(self, event):
from gui import page2
values = []
name = self.inpt_name.GetValue()
name = name.replace(' ', '')
print(name)
familia = self.inpt_familia.GetValue()
if len(familia) == 0:
@@ -103,17 +100,16 @@ class MainFramePanel(wx.Panel):
self.empty_pole()
return
fio = str(familia) + ' ' + str(name)
fio = str(familia).lower() + ' ' + str(name).lower()
new_session = Session()
if new_session.query(exists().where(Student.fname==fio).
where(Student.group==group).where(Student.zach_number==zach_number)).scalar():
print("ЗАГРУЖАЮ ВАШЕ ЗАДАНИЕ")
else:
print("пора занести вас в базу и придумать для вас задание")
student = Student(fname=fio, group=group, zach_number=zach_number)
new_session.add(student)
new_session.commit()
self.frame.Hide()
page2.MainFramePanel.run_page(self)
class MainFrame(wx.Frame):
def __init__(self, parent):

View File

@@ -1,12 +1,6 @@
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import relationship
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from base import Base
engine = create_engine("sqlite:////odd-perekrestok.db", echo=True)
Session = sessionmaker(bind=engine)
Base = declarative_base()
class Student(Base):
__tablename__ = 'Student'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB