Добавлены описание проекта

рефакторинг модели данных
This commit is contained in:
danamir
2018-12-10 00:01:43 +03:00
parent 0c7e94676c
commit 27adad3d04
7 changed files with 175 additions and 164 deletions

View File

@@ -1,29 +1,16 @@
# README # # О проекте #
Данная программа предназначена для расчета цикла светофорного регулирования
This README would normally document whatever steps are necessary to get your application up and running. ### Используемые технологии ###
### What is this repository for? ### * wxPython 4.0.3
* sqlite
* sqlalchemy
* Quick summary ### Команда проекта ###
* Version
* [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)
### How do I get set up? ### * Александр Сальный
* Ольга Курьянова
* Ксения Талыкова
* Summary of set up
* Configuration
* Dependencies
* Database configuration
* How to run tests
* Deployment instructions
### Contribution guidelines ###
* Writing tests
* Code review
* Other guidelines
### Who do I talk to? ###
* Repo owner or admin
* Other community or team contact

43
controller.py Normal file
View File

@@ -0,0 +1,43 @@
import os
import tkinter as tk
import wx
def setBacgroundColor():
"""
Устанавливает цвет панели для приложения
:return:
"""
color = "white"
return color
def setBckgroundButtonColor():
# todo Найти все кнопки в панели и установить им цвет
"""
Устанавливает цвет кнопок
:return:
"""
wx.lib.colourdb.updateColourDB()
color = wx.NamedColour("light coral")
return color
def getFullPath(file):
put = os.getcwd()
path = str(put) + '\\' + file
return path
def setSize():
"""
:parameter sh,sw - ширина и высота экрана, на котором
запускается программа
:return: w,h - размеры фрейма для отрисовки gui
"""
root = tk.Tk()
sw = root.winfo_screenwidth()
sh = root.winfo_screenheight()
w = int(0.75 * sw)
h = int(0.75 * sh)
if w < 800 and h < 600:
w, h = 800, 600
return w, h

View File

@@ -3,7 +3,8 @@ from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
engine = create_engine("sqlite:///odd.db", echo=True) path = "C:\\Users\\danamir\\PycharmProjects\\odd-perekrestok\\db\\odd.db"
engine = create_engine("sqlite:///C:\\Users\\danamir\\PycharmProjects\\odd-perekrestok\\db\\odd.db", echo=True)
Session = sessionmaker(bind=engine) Session = sessionmaker(bind=engine)
Base = declarative_base(engine) Base = declarative_base(engine)
meta = Base.metadata meta = Base.metadata
@@ -29,9 +30,9 @@ class KatDorogi(Base):
__tablename__ = 'KatDor' __tablename__ = 'KatDor'
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
kategoria = Column("kategoria", Integer) kategoria = Column("kategoria", Integer)
minshirinapolosu = Column("Min Shirina Polosu", Float(Precision=16)) minshirinapolosu = Column("Min Shirina Polosu", Float)
maxshirinapolosu = Column("Max Shirina Polosu", Float(Precision=16)) maxshirinapolosu = Column("Max Shirina Polosu", Float)
shirinaobochinu = Column("Shirian Obochinu", Float(Precision=16)) shirinaobochinu = Column("Shirian Obochinu", Float)
maxpivedinetns = Column("Max Prived Intens", Integer) maxpivedinetns = Column("Max Prived Intens", Integer)
def __init__(self, kategoria, minshirinapolosu, maxshirinapolosu, shirinaobochinu, maxpivedinetns): def __init__(self, kategoria, minshirinapolosu, maxshirinapolosu, shirinaobochinu, maxpivedinetns):
@@ -45,35 +46,19 @@ class KatDorogi(Base):
return "KatDor(kategoria=%s, minshirinapolosu=%s, maxshirinapolosu=%s, shirinaobochinu=%s, maxpivedinetns=%s)" % \ return "KatDor(kategoria=%s, minshirinapolosu=%s, maxshirinapolosu=%s, shirinaobochinu=%s, maxpivedinetns=%s)" % \
(self.kategoria, self.minshirinapolosu, self.maxshirinapolosu, self.shirinaobochinu, self.maxpivedinetns) (self.kategoria, self.minshirinapolosu, self.maxshirinapolosu, self.shirinaobochinu, self.maxpivedinetns)
class Zadanie():
__tablename__ = 'KatDor'
id = Column(Integer, primary_key=True, autoincrement=True)
N1 = Column("N1", Float(Precision=16))
N11 = Column("N11", Float(Precision=16))
N12 = Column("N11", Float(Precision=16))
N13 = Column("N11", Float(Precision=16))
N1p = Column("N11", Float(Precision=16))
N2 = Column("N11", Float(Precision=16))
N21 = Column("N11", Float(Precision=16))
N22 = Column("N11", Float(Precision=16))
N23 = Column("N11", Float(Precision=16))
N2p = Column("N11", Float(Precision=16))
N3 = Column("N11", Float(Precision=16))
N31 = Column("N11", Float(Precision=16))
N32 = Column("N11", Float(Precision=16))
N33 = Column("N11", Float(Precision=16))
N3p = Column("N11", Float(Precision=16))
N4 = Column("N11", Float(Precision=16))
N41 = Column("N11", Float(Precision=16))
N42 = Column("N11", Float(Precision=16))
N43 = Column("N11", Float(Precision=16))
N4p = Column("N11", Float(Precision=16))
def __init__(self, n1, n11, n12, n13): class Zadanie(Base):
self.n1 = n1 __tablename__ = 'Zadanie'
self.n11 = n11 id = Column(Integer, primary_key=True, autoincrement=True)
self.n12 = n12 N1 = Column("n1", Float)
self.n13 = n13
def __init__(self,n1):
self.n1 = n1
def __repr__(self):
return "Zadanie(n1=%s)" %(self.n1)

BIN
db/odd.db

Binary file not shown.

View File

@@ -1,10 +0,0 @@
import os
def getFullPath(file):
put = os.getcwd()
path = str(put) + '\\' + file
return path
file =img/good.jpg
p1 = getFullPath("img\error.jpg")
print(p1)

View File

@@ -10,7 +10,7 @@ class SeconPageFrame(wx.Frame):
wx.Frame.__init__(self, *args, **kwds) wx.Frame.__init__(self, *args, **kwds)
self.SetSize((658, 331)) self.SetSize((658, 331))
self.panel_1 = wx.Panel(self, wx.ID_ANY) self.panel_1 = wx.Panel(self, wx.ID_ANY)
self.color = "white"
self.panel_1.SetBackgroundColour(self.color) self.panel_1.SetBackgroundColour(self.color)
self.radio_btn_2 = wx.RadioButton(self.panel_1, wx.ID_ANY, u"Крестообразный") self.radio_btn_2 = wx.RadioButton(self.panel_1, wx.ID_ANY, u"Крестообразный")
self.radio_btn_3 = wx.RadioButton(self.panel_1, wx.ID_ANY, u"Т-образный") self.radio_btn_3 = wx.RadioButton(self.panel_1, wx.ID_ANY, u"Т-образный")
@@ -47,33 +47,38 @@ class SeconPageFrame(wx.Frame):
label_1 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Исходные данные для расчета") label_1 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Исходные данные для расчета")
label_1.SetFont(wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, "")) label_1.SetFont(wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
sizer_2.Add(label_1, 0, wx.ALIGN_CENTER | wx.ALL, 10) sizer_2.Add(label_1, 0, wx.ALIGN_CENTER | wx.ALL, 10)
label_7 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория \n Горизональной улицы") label_7 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория \n Горизональной улицы")
grid_sizer_1.Add(label_7, 0, wx.ALIGN_CENTER | wx.ALL, 10) grid_sizer_1.Add(label_7, 0, wx.ALIGN_CENTER | wx.ALL, 10)
label_8 = wx.StaticText(self.panel_1, wx.ID_ANY, "", style=wx.ALIGN_CENTER) self.katHorizont = wx.StaticText(self.panel_1, wx.ID_ANY, "", style=wx.ALIGN_CENTER)
grid_sizer_1.Add(label_8, 0, wx.ALIGN_CENTER, 0) grid_sizer_1.Add(self.katHorizont, 0, wx.ALIGN_CENTER, 0)
label_9 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория \n Вертикальной улицы") label_9 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория \n Вертикальной улицы")
grid_sizer_1.Add(label_9, 0, wx.ALIGN_CENTER, 0) grid_sizer_1.Add(label_9, 0, wx.ALIGN_CENTER, 0)
label_10 = wx.StaticText(self.panel_1, wx.ID_ANY, "") self.katVertical = wx.StaticText(self.panel_1, wx.ID_ANY, "")
grid_sizer_1.Add(label_10, 0, wx.ALIGN_CENTER, 0) grid_sizer_1.Add(self.katVertical, 0, wx.ALIGN_CENTER, 0)
label_11 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос \n Горизонтальной улицы") label_11 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос \n Горизонтальной улицы")
grid_sizer_1.Add(label_11, 0, wx.ALIGN_CENTER, 0) grid_sizer_1.Add(label_11, 0, wx.ALIGN_CENTER, 0)
label_12 = wx.StaticText(self.panel_1, wx.ID_ANY, "", style=wx.ALIGN_CENTER) self.kolvoPolosHorizont = wx.StaticText(self.panel_1, wx.ID_ANY, "", style=wx.ALIGN_CENTER)
grid_sizer_1.Add(label_12, 0, wx.ALIGN_CENTER, 0) grid_sizer_1.Add(self.kolvoPolosHorizont, 0, wx.ALIGN_CENTER, 0)
label_13 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос \n Вертикальной улицы") label_13 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос \n Вертикальной улицы")
grid_sizer_1.Add(label_13, 0, wx.ALIGN_CENTER, 0) grid_sizer_1.Add(label_13, 0, wx.ALIGN_CENTER, 0)
label_14 = wx.StaticText(self.panel_1, wx.ID_ANY, "") self.kolvoPolosVert = wx.StaticText(self.panel_1, wx.ID_ANY, "")
grid_sizer_1.Add(label_14, 0, wx.ALIGN_CENTER, 0) grid_sizer_1.Add(self.kolvoPolosVert, 0, wx.ALIGN_CENTER, 0)
sizer_2.Add(grid_sizer_1, 1, wx.EXPAND, 0) sizer_2.Add(grid_sizer_1, 1, wx.EXPAND, 0)
label_18 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Выберите тип пересечения") label_18 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Выберите тип пересечения")
label_18.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, "")) label_18.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
sizer_2.Add(label_18, 0, wx.ALL, 9) sizer_2.Add(label_18, 0, wx.ALL, 9)
grid_sizer_3.Add(self.radio_btn_2, 0, wx.ALIGN_CENTER_HORIZONTAL, 0) grid_sizer_3.Add(self.radio_btn_2, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
grid_sizer_3.Add(self.radio_btn_3, 0, wx.ALIGN_CENTER_HORIZONTAL, 0) grid_sizer_3.Add(self.radio_btn_3, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
self.bitmap_4 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap("/Users/danamir/PycharmProjects/odd-perekrestok/img/perekr-4.jpg", wx.BITMAP_TYPE_ANY)) self.bitmap_4 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap(100,100, wx.BITMAP_TYPE_ANY))
grid_sizer_3.Add(self.bitmap_4, 0, 0, 0) grid_sizer_3.Add(self.bitmap_4, 0, 0, 0)
self.bitmap_5 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap("/Users/danamir/PycharmProjects/odd-perekrestok/img/perekr-t.png", wx.BITMAP_TYPE_ANY)) self.bitmap_5 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap(100, 100, wx.BITMAP_TYPE_ANY))
grid_sizer_3.Add(self.bitmap_5, 0, 0, 0) grid_sizer_3.Add(self.bitmap_5, 0, 0, 0)
sizer_2.Add(grid_sizer_3, 1, wx.EXPAND, 0) sizer_2.Add(grid_sizer_3, 1, wx.EXPAND, 0)
@@ -84,7 +89,7 @@ class SeconPageFrame(wx.Frame):
grid_sizer_2.Add(label_16, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT, 0) grid_sizer_2.Add(label_16, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT, 0)
grid_sizer_2.Add(self.text_ctrl_1, 0, wx.ALIGN_CENTER, 0) grid_sizer_2.Add(self.text_ctrl_1, 0, wx.ALIGN_CENTER, 0)
bitmap_2 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap("/Users/danamir/PycharmProjects/odd-perekrestok/img/123.jpg", wx.BITMAP_TYPE_ANY)) bitmap_2 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap(100, 100, wx.BITMAP_TYPE_ANY))
bitmap_2.Hide() bitmap_2.Hide()
grid_sizer_2.Add(bitmap_2, 0, 0, 0) grid_sizer_2.Add(bitmap_2, 0, 0, 0)
@@ -92,7 +97,7 @@ class SeconPageFrame(wx.Frame):
grid_sizer_2.Add(label_17, 0, 0, 0) grid_sizer_2.Add(label_17, 0, 0, 0)
grid_sizer_2.Add(self.text_ctrl_2, 0, wx.ALIGN_CENTER, 0) grid_sizer_2.Add(self.text_ctrl_2, 0, wx.ALIGN_CENTER, 0)
bitmap_3 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap("/Users/danamir/PycharmProjects/odd-perekrestok/img/123.jpg", wx.BITMAP_TYPE_ANY)) bitmap_3 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap(100, 100, wx.BITMAP_TYPE_ANY))
grid_sizer_2.Add(bitmap_3, 0, 0, 0) grid_sizer_2.Add(bitmap_3, 0, 0, 0)
sizer_2.Add(grid_sizer_2, 1, wx.EXPAND, 0) sizer_2.Add(grid_sizer_2, 1, wx.EXPAND, 0)
@@ -116,14 +121,14 @@ class SeconPageFrame(wx.Frame):
self.Refresh() self.Refresh()
def set_kat_dor(self): def set_kat_dor(self):
self.kolvo_polosv_vert.SetLabel(str(random.randint(2, 4))) self.kolvoPolosVert.SetLabel(str(random.randint(2, 4)))
self.kolvo_polosv_horiz.SetLabel(str(random.randint(2, 4))) self.kolvoPolosHorizont.SetLabel(str(random.randint(2, 4)))
self.kat_horizont.SetLabel(str(random.randint(2, 4))) self.katHorizont.SetLabel(str(random.randint(2, 4)))
self.kat_vertical.SetLabel(str(random.randint(2, 4))) self.katVertical.SetLabel(str(random.randint(2, 4)))
def proverka_vvoda(self, event): def proverka_vvoda(self, event):
self.pr_Vert = int(self.kolvo_polosv_horiz.GetLabel()) * 3.75 self.pr_Vert = int(self.kolvoPolosHorizont.GetLabel()) * 3.75
self.pr_hor = int(self.kolvo_polosv_horiz.GetLabel()) * 3.75 self.pr_hor = int(self.kolvoPolosHorizont.GetLabel()) * 3.75
print(self.pr_hor) print(self.pr_hor)
print(self.pr_Vert) print(self.pr_Vert)
@@ -186,7 +191,6 @@ class SeconPageFrame(wx.Frame):
class SecondPage(wx.App): class SecondPage(wx.App):
def OnInit(self): def OnInit(self):
self.frame = SeconPageFrame(None, wx.ID_ANY, "") self.frame = SeconPageFrame(None, wx.ID_ANY, "")
self.SetTopWindow(self.frame)
self.frame.Show() self.frame.Show()
return True return True

160
main.py
View File

@@ -1,87 +1,91 @@
# -*- coding: utf-8 -*- # -*- coding: UTF-8 -*-
import wx import wx
import controller
from db.models import Student from db.models import Student
from sqlalchemy import exists from sqlalchemy import exists
from db.models import Session from db.models import Session
from gui import SecondPage from gui import SecondPage
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.panel_1 = wx.Panel(self, wx.ID_ANY)
self.inpt_name = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
self.inpt_familia = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
self.inpt_group = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
self.inpt_zachetka = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
self.btn2 = wx.Button(self.panel_1, wx.ID_ANY, u"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438")
self.button_1 = wx.Button(self.panel_1, wx.ID_ANY, u"\u0414\u0430\u043b\u0435\u0435")
class MainFramePanel(wx.Panel): self.__set_properties()
def __init__(self, parent): self.__do_layout()
# todo Изменить цвет панели на белый # end wxGlade
wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 500),
style=wx.FULL_REPAINT_ON_RESIZE)
self.frame = parent
bSizer1 = wx.BoxSizer(wx.VERTICAL) def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.SetTitle("Расчет цикла свеетофорного регулирования: Приветственая")
self.inpt_name.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
self.inpt_familia.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
self.inpt_zachetka.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
self.btn2.SetMinSize((100, 50))
self.button_1.SetMinSize((100, 50))
self.frameSize = controller.setSize()
self.SetSize(self.frameSize)
self.SetMinSize((800, 600))
self.color = controller.setBacgroundColor()
self.panel_1.SetBackgroundColour(self.color)
self.lbl_kaf = wx.StaticText(self, wx.ID_ANY, u"Кафедра «Организация и безопасность движения»", # end wxGlade
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"Расчёт цикла светофорного регулирования на перекрёстке", def __do_layout(self):
wx.DefaultPosition, wx.DefaultSize, 0) # begin wxGlade: MyFrame.__do_layout
self.lbl_NameProg.Wrap(-1) sizer_1 = wx.BoxSizer(wx.VERTICAL)
bSizer1.Add(self.lbl_NameProg, 0, wx.ALIGN_CENTER | wx.ALL, 5) sizer_2 = wx.StaticBoxSizer(wx.StaticBox(self.panel_1, wx.ID_ANY, ""), wx.VERTICAL)
grid_sizer_2 = wx.GridSizer(0, 2, 0, 0)
self.lbl_predstv = wx.StaticText(self, wx.ID_ANY, u"Представьтесь:", wx.DefaultPosition, wx.DefaultSize, 0) grid_sizer_1 = wx.GridSizer(0, 2, 0, 0)
self.lbl_predstv.Wrap(-1) label_1 = wx.StaticText(self.panel_1, wx.ID_ANY, u"\u041a\u0430\u0444\u0435\u0434\u0440\u0430 \"\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\"")
bSizer1.Add(self.lbl_predstv, 0, wx.ALL, 5) label_1.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
sizer_2.Add(label_1, 0, wx.ALIGN_CENTER | wx.BOTTOM | wx.LEFT | wx.RIGHT, 20)
fgSizer1 = wx.FlexGridSizer(0, 2, 0, 0) label_2 = wx.StaticText(self.panel_1, wx.ID_ANY, u"\u0420\u0430\u0441\u0447\u0435\u0442 \u0446\u0438\u043a\u043b\u0430 \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043f\u0435\u0440\u0435\u043a\u0440\u0435\u0441\u0442\u043a\u0435")
fgSizer1.SetFlexibleDirection(wx.BOTH) label_2.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
fgSizer1.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) sizer_2.Add(label_2, 0, wx.ALIGN_CENTER, 0)
label_3 = wx.StaticText(self.panel_1, wx.ID_ANY, u"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435\u0441\u044c")
self.lbl_name = wx.StaticText(self, wx.ID_ANY, u"Имя", wx.DefaultPosition, wx.DefaultSize, 0) label_3.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
self.lbl_name.Wrap(-1) sizer_2.Add(label_3, 0, wx.ALL, 5)
fgSizer1.Add(self.lbl_name, 0, wx.ALL, 5) label_4 = wx.StaticText(self.panel_1, wx.ID_ANY, u"\u0418\u043c\u044f")
label_4.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
self.inpt_name = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) grid_sizer_1.Add(label_4, 0, wx.ALIGN_CENTER, 0)
fgSizer1.Add(self.inpt_name, 0, wx.ALL, 5) grid_sizer_1.Add(self.inpt_name, 0, wx.ALIGN_CENTER, 0)
inpt_familia1 = wx.StaticText(self.panel_1, wx.ID_ANY, u"\u0424\u0430\u043c\u0438\u043b\u0438\u044f")
self.lbl_familia = wx.StaticText(self, wx.ID_ANY, u"Фамилия", wx.DefaultPosition, wx.DefaultSize, 0) inpt_familia1.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
self.lbl_familia.Wrap(-1) grid_sizer_1.Add(inpt_familia1, 0, wx.ALIGN_CENTER, 0)
fgSizer1.Add(self.lbl_familia, 0, wx.ALL, 5) grid_sizer_1.Add(self.inpt_familia, 0, wx.ALIGN_CENTER, 0)
label_5 = wx.StaticText(self.panel_1, wx.ID_ANY, u"\u0413\u0440\u0443\u043f\u043f\u0430")
self.inpt_familia = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) label_5.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
fgSizer1.Add(self.inpt_familia, 0, wx.ALL, 5) grid_sizer_1.Add(label_5, 0, wx.ALIGN_CENTER, 0)
grid_sizer_1.Add(self.inpt_group, 0, wx.ALIGN_CENTER, 0)
self.lbl_group = wx.StaticText(self, wx.ID_ANY, u"Группа", wx.DefaultPosition, wx.DefaultSize, 0) label_6 = wx.StaticText(self.panel_1, wx.ID_ANY, u"\u2116 \u0417\u0430\u0447\u0435\u0442\u043d\u043e\u0439 \u043a\u043d\u0438\u0436\u043a\u0438")
self.lbl_group.Wrap(-1) label_6.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
fgSizer1.Add(self.lbl_group, 0, wx.ALL, 5) grid_sizer_1.Add(label_6, 0, wx.ALIGN_CENTER, 0)
grid_sizer_1.Add(self.inpt_zachetka, 0, wx.ALIGN_CENTER, 0)
self.inpt_group = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) sizer_2.Add(grid_sizer_1, 1, wx.EXPAND, 0)
fgSizer1.Add(self.inpt_group, 0, wx.ALL, 5) grid_sizer_2.Add(self.btn2, 0, wx.ALIGN_BOTTOM, 0)
grid_sizer_2.Add(self.button_1, 0, wx.ALIGN_BOTTOM | wx.ALIGN_RIGHT, 0)
self.lbl_zachetka = wx.StaticText(self, wx.ID_ANY, u"№ Зачётной книжки", wx.DefaultPosition, wx.DefaultSize, 0) sizer_2.Add(grid_sizer_2, 1, wx.EXPAND, 0)
self.lbl_zachetka.Wrap(-1) self.panel_1.SetSizer(sizer_2)
fgSizer1.Add(self.lbl_zachetka, 0, wx.ALL, 5) sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
self.SetSizer(sizer_1)
self.inpt_zachetka = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
fgSizer1.Add(self.inpt_zachetka, 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() self.Layout()
self.btn_page2.Bind(wx.EVT_BUTTON, self.go_page2) # end wxGlade
def empty_pole(self): def empty_pole(self):
dlg = wx.MessageDialog(self, 'Не все поля заполнены. Заполните все поля перед продолжением', 'Ошибка', wx.OK) dlg = wx.MessageDialog(self, 'Не все поля заполнены. Заполните все поля перед продолжением', 'Ошибка', wx.OK)
val = dlg.ShowModal() val = dlg.ShowModal()
if val == wx.ID_OK: if val == wx.ID_OK:
dlg.Destroy() dlg.Destroy()
def go_page2(self, event): def go_page2(self, event):
name = self.inpt_name.GetValue() name = self.inpt_name.GetValue()
@@ -114,23 +118,21 @@ class MainFramePanel(wx.Panel):
new_session.add(student) new_session.add(student)
new_session.commit() new_session.commit()
self.frame.Destroy() self.frame.Destroy()
SecondPage.SecondPage.OnInit(SecondPage) SecondPage.SecondPage.OnInit(SecondPage)
class MainFrame(wx.Frame): # todo Перенести весь функционал из main.py
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) class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame(None, wx.ID_ANY, "")
self.frame.Center()
self.frame.Show()
return True
self.Centre(wx.BOTH) # end of class MyApp
panel = MainFramePanel(self)
if __name__ == "__main__": if __name__ == "__main__":
app = wx.App(False) app = MyApp(0)
frame = MainFrame(None)
frame.Center()
frame.Show()
app.MainLoop() app.MainLoop()