Изменена логика построения инетрфейса

При открытии следующего окна родительское закрывается
This commit is contained in:
danamir
2018-05-02 22:31:50 +03:00
parent 9ea8346874
commit e20a92e98f
2 changed files with 124 additions and 43 deletions

View File

@@ -43,9 +43,10 @@ class SecondPage(wx.Frame):
# Virtual event handlers, overide them in your derived class # Virtual event handlers, overide them in your derived class
def lab1(self, event): def lab1(self, event):
from lab1 import lab1 from labs.lab1 import lab1
nex_page = lab1.MainFrame() nex_page = lab1.MainFrame()
nex_page.Show() nex_page.Show()
self.Destroy()
app = wx.App(False) app = wx.App(False)

156
main.py
View File

@@ -1,55 +1,135 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import wx import wx
import wx.xrc
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.FULL_REPAINT_ON_RESIZE)
self.frame = parent
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"Расчёт цикла светофорного регулирования на перекрёстке",
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.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.btn_page2.Bind(wx.EVT_BUTTON, self.go_page2)
def empty_pole(self):
dlg = wx.MessageDialog(self, 'Не все поля заполнены. Заполните все поля перед продолжением', 'Ошибка', wx.OK)
val = dlg.ShowModal()
if val == wx.ID_OK:
dlg.Destroy()
class MainPage(wx.Frame): def go_page2(self, event):
from gui import second_page
values = []
name = self.inpt_name.GetValue()
name = name.replace(' ', '')
if len(name) == 0:
self.empty_pole()
return
familia = self.inpt_familia.GetValue()
familia = familia.replace(' ', '')
if len(familia) == 0:
self.empty_pole()
return
group = self.inpt_group.GetValue()
group = group.replace(' ', '')
if len(group) == 0:
self.empty_pole()
return
zach_number = self.inpt_zachetka.GetValue()
zach_number = zach_number.replace(' ', '')
if len(zach_number) == 0:
self.empty_pole()
return
values.append(name)
values.append(familia)
values.append(group)
values.append(zach_number)
print(values)
self.frame.Hide()
class MainFrame(wx.Frame):
def __init__(self, parent): def __init__(self, parent):
wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition, wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition,
size=wx.Size(500, 300), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) size=wx.Size(500, 500), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
sizer_all = wx.FlexGridSizer(3, 2, 0, 0)
sizer_all.SetFlexibleDirection(wx.BOTH)
sizer_all.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
self.lgn_label = wx.StaticText(self, wx.ID_ANY, u"Логин", wx.DefaultPosition, wx.DefaultSize, 0)
self.lgn_label.Wrap(-1)
sizer_all.Add(self.lgn_label, 0, wx.ALL, 5)
self.lgn_txt = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
sizer_all.Add(self.lgn_txt, 0, wx.ALL, 5)
self.pswd_label = wx.StaticText(self, wx.ID_ANY, u"Пароль", wx.DefaultPosition, wx.DefaultSize, 0)
self.pswd_label.Wrap(-1)
sizer_all.Add(self.pswd_label, 0, wx.ALL, 5)
self.pswd_txt = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, style=wx.TE_PASSWORD)
sizer_all.Add(self.pswd_txt, 0, wx.ALL, 5)
self.lgn_button = wx.Button(self, wx.ID_ANY, u"Войти")
sizer_all.Add(self.lgn_button,0, wx.ALL, 5)
self.SetSizer(sizer_all)
self.Layout()
self.Centre(wx.BOTH) self.Centre(wx.BOTH)
panel = MainFramePanel(self)
# Connect Events
self.lgn_button.Bind(wx.EVT_BUTTON, self.login)
def login(self, event):
from gui import second_page
nxt_page = second_page.SecondPage(None)
nxt_page.Show()
nxt_page.Destroy()
if __name__ == "__main__":
app = wx.App(False) app = wx.App(False)
frame = MainPage(None) frame = MainFrame(None)
frame.Show() frame.Show()
app.MainLoop() app.MainLoop()