Перерисована вторая страница

Добавлена структура для выноса общих функций
Проект сломан. Работает только 1я страница. Рефакторинг
This commit is contained in:
danamir
2018-12-09 18:49:44 +03:00
parent 7b1ffc3071
commit 0c7e94676c
8 changed files with 441 additions and 441 deletions

359
gui/SecondPage.py Executable file → Normal file
View File

@@ -1,220 +1,197 @@
import wx
import random
import os
class SecondPageFrame(wx.Frame):
def scale_bitmap(self, bitmap, width, height):
self.w = width
self.h = height
image = wx.Image(bitmap)
image = image.Scale(self.w, self.h, wx.IMAGE_QUALITY_HIGH)
result = wx.Bitmap(image)
return result
class SeconPageFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: SeconPageFrame.__init__
kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.SetSize((658, 331))
self.panel_1 = wx.Panel(self, wx.ID_ANY)
self.color = "white"
self.panel_1.SetBackgroundColour(self.color)
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.text_ctrl_1 = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
self.text_ctrl_2 = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
def __init__(self, *args, **kwds):
kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.SetSize((800, 600))
self.radio_btn_2 = wx.RadioButton(self, wx.ID_ANY, u"Крестообразный\n")
self.radio_btn_3 = wx.RadioButton(self, wx.ID_ANY, u"Т-образный")
self.text_ctrl_1 = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_PROCESS_ENTER)
self.text_ctrl_2 = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_PROCESS_ENTER)
self.text_ctrl_1.Bind(wx.EVT_TEXT_ENTER, self.proverka_vvoda)
self.text_ctrl_2.Bind(wx.EVT_TEXT_ENTER, self.proverka_vvoda)
self.radio_btn_2.SetValue(True)
self.text_ctrl_1.Bind(wx.EVT_TEXT_ENTER, self.proverka_vvoda)
self.text_ctrl_2.Bind(wx.EVT_TEXT_ENTER, self.proverka_vvoda)
self.radio_btn_2.SetValue(True)
self.__set_properties()
self.__do_layout()
self.set_kat_dor()
def scale_bitmap(self, bitmap, width, height):
self.w = width
self.h = height
image = wx.Image(bitmap)
image = image.Scale(self.w, self.h, wx.IMAGE_QUALITY_HIGH)
result = wx.Bitmap(image)
return result
self.__set_properties()
self.__do_layout()
self.set_kat_dor()
def __set_properties(self):
# begin wxGlade: SeconPageFrame.__set_properties
self.SetTitle("Расчет цикла светофорного регулирования")
def __do_layout(self):
# begin wxGlade: SeconPageFrame.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.StaticBoxSizer(wx.StaticBox(self.panel_1, wx.ID_ANY, "sizer_2"), wx.VERTICAL)
grid_sizer_2 = wx.FlexGridSizer(1, 6, 0, 0)
grid_sizer_3 = wx.GridSizer(0, 2, 0, 0)
grid_sizer_1 = wx.GridSizer(0, 4, 0, 0)
label_1 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Исходные данные для расчета")
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)
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)
label_8 = wx.StaticText(self.panel_1, wx.ID_ANY, "", style=wx.ALIGN_CENTER)
grid_sizer_1.Add(label_8, 0, wx.ALIGN_CENTER, 0)
label_9 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория \n Вертикальной улицы")
grid_sizer_1.Add(label_9, 0, wx.ALIGN_CENTER, 0)
label_10 = wx.StaticText(self.panel_1, wx.ID_ANY, "")
grid_sizer_1.Add(label_10, 0, wx.ALIGN_CENTER, 0)
label_11 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос \n Горизонтальной улицы")
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)
grid_sizer_1.Add(label_12, 0, wx.ALIGN_CENTER, 0)
label_13 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос \n Вертикальной улицы")
grid_sizer_1.Add(label_13, 0, wx.ALIGN_CENTER, 0)
label_14 = wx.StaticText(self.panel_1, wx.ID_ANY, "")
grid_sizer_1.Add(label_14, 0, wx.ALIGN_CENTER, 0)
sizer_2.Add(grid_sizer_1, 1, wx.EXPAND, 0)
label_18 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Выберите тип пересечения")
label_18.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
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_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))
grid_sizer_3.Add(self.bitmap_4, 0, 0, 0)
def __set_properties(self):
self.SetTitle("Расчёт цикла светофорного регулирования")
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))
grid_sizer_3.Add(self.bitmap_5, 0, 0, 0)
sizer_2.Add(grid_sizer_3, 1, wx.EXPAND, 0)
def __do_layout(self):
sizer_1 = wx.BoxSizer(wx.VERTICAL)
grid_sizer_2 = wx.GridSizer(0, 3, 20, 100)
grid_sizer_3 = wx.FlexGridSizer(0, 2, 20, 200)
grid_sizer_1 = wx.GridSizer(0, 4, 0, 0)
btn_sizer = wx.BoxSizer(wx.HORIZONTAL)
label_15 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Необходимо расчитать:")
label_15.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
sizer_2.Add(label_15, 0, 0, 0)
label_16 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Ширину проезжей части \n Горизонтальной улицы")
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)
label_6 = wx.StaticText(self, wx.ID_ANY, u"Исходные данные для расчёта:")
label_6.SetFont(wx.Font(16, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
sizer_1.Add(label_6, 0, wx.ALIGN_CENTER_HORIZONTAL, 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.Hide()
grid_sizer_2.Add(bitmap_2, 0, 0, 0)
label_7 = wx.StaticText(self, wx.ID_ANY, u"Категория \n горизонтальной улицы")
grid_sizer_1.Add(label_7, 0, wx.ALIGN_CENTER | wx.ALL, 10)
label_17 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Ширину проезжей части \n Вертикальной улицы")
grid_sizer_2.Add(label_17, 0, 0, 0)
grid_sizer_2.Add(self.text_ctrl_2, 0, wx.ALIGN_CENTER, 0)
self.kat_horizont = wx.StaticText(self, wx.ID_ANY, "", style=wx.ALIGN_CENTER)
grid_sizer_1.Add(self.kat_horizont, 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))
grid_sizer_2.Add(bitmap_3, 0, 0, 0)
sizer_2.Add(grid_sizer_2, 1, wx.EXPAND, 0)
label_9 = wx.StaticText(self, wx.ID_ANY, u"Категория \n вертикальной улицы")
grid_sizer_1.Add(label_9, 0, wx.ALIGN_CENTER, 0)
self.panel_1.SetSizer(sizer_2)
sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
self.SetSizer(sizer_1)
self.Layout()
self.kat_vertical = wx.StaticText(self, wx.ID_ANY, "")
grid_sizer_1.Add(self.kat_vertical, 0, wx.ALIGN_CENTER, 0)
def good(self):
self.img1 = "/Users/danamir/PycharmProjects/odd-perekrestok/img/123.jpg"
self.img4 = self.scale_bitmap(self.img1, 50, 50)
self.bitmap_2.SetBitmap(wx.Bitmap(self.img1))
self.bitmap_2.Show()
self.Refresh()
label10= wx.StaticText(self, wx.ID_ANY, u"Количество полос \n горизонтальной улицы")
grid_sizer_1.Add(label10, 0, wx.ALIGN_CENTER, 0)
def bad(self):
self.img2 = "/Users/danamir/PycharmProjects/odd-perekrestok/img/bad.jpg"
self.img3 = self.scale_bitmap(self.img2, 70, 50)
self.bitmap_3.SetBitmap(wx.Bitmap(self.img3))
self.bitmap_3.Show()
self.Refresh()
self.kolvo_polosv_horiz = wx.StaticText(self, wx.ID_ANY, "", style=wx.ALIGN_CENTER)
grid_sizer_1.Add(self.kolvo_polosv_horiz, 0, wx.ALIGN_CENTER, 0)
def set_kat_dor(self):
self.kolvo_polosv_vert.SetLabel(str(random.randint(2, 4)))
self.kolvo_polosv_horiz.SetLabel(str(random.randint(2, 4)))
self.kat_horizont.SetLabel(str(random.randint(2, 4)))
self.kat_vertical.SetLabel(str(random.randint(2, 4)))
label_13 = wx.StaticText(self, wx.ID_ANY, u"Количество полос \n вертикальной улицы")
grid_sizer_1.Add(label_13, 0, wx.ALIGN_CENTER, 0)
def proverka_vvoda(self, event):
self.pr_Vert = int(self.kolvo_polosv_horiz.GetLabel()) * 3.75
self.pr_hor = int(self.kolvo_polosv_horiz.GetLabel()) * 3.75
self.kolvo_polosv_vert = wx.StaticText(self, wx.ID_ANY, "")
grid_sizer_1.Add(self.kolvo_polosv_vert, 0, wx.ALIGN_CENTER, 0)
print(self.pr_hor)
print(self.pr_Vert)
if len(self.text_ctrl_1.GetValue()) > 0:
if str(self.pr_hor) == self.text_ctrl_1.GetValue():
self.file = open("123", "w").close()
self.file = open("123", "w")
self.file.writelines(self.text_ctrl_1.GetValue() + "\n")
self.file.close()
print("good")
self.bitmap_2.Hide()
self.img1 = "/Users/danamir/PycharmProjects/odd-perekrestok/img/123.jpg"
self.img4 = self.scale_bitmap(self.img1, 50, 50)
self.bitmap_2.SetBitmap(wx.Bitmap(self.img4))
self.bitmap_2.Show()
self.Refresh()
else:
print("bad")
self.bitmap_2.Hide()
self.img2 = "/Users/danamir/PycharmProjects/odd-perekrestok/img/bad.jpg"
self.img3 = self.scale_bitmap(self.img2, 70, 50)
self.bitmap_2.SetBitmap(wx.Bitmap(self.img3))
self.bitmap_2.Show()
self.text_ctrl_1.SetValue(str(self.pr_hor))
self.Refresh()
sizer_1.Add(grid_sizer_1, 1, wx.EXPAND, 0)
label_18 = wx.StaticText(self, wx.ID_ANY, u"Выберите тип пересечения:")
label_18.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
if len(self.text_ctrl_2.GetValue()) > 0:
if str(self.pr_Vert) == self.text_ctrl_2.GetValue() and len(self.text_ctrl_2.GetValue()) > 0:
print("good")
self.bitmap_3.Hide()
self.img1 = "/Users/danamir/PycharmProjects/odd-perekrestok/img/123.jpg"
self.img4 = self.scale_bitmap(self.img1, 50, 50)
self.bitmap_3.SetBitmap(wx.Bitmap(self.img4))
self.bitmap_3.Show()
self.Refresh()
else:
print("Bad")
self.bitmap_3.Hide()
self.img2 = "/Users/danamir/PycharmProjects/odd-perekrestok/img/bad.jpg"
self.img3 = self.scale_bitmap(self.img2, 70, 50)
self.bitmap_3.SetBitmap(wx.Bitmap(self.img3))
self.bitmap_3.Show()
self.text_ctrl_2.SetValue(str(self.pr_Vert))
self.Refresh()
sizer_1.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_3, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
img = self.scale_bitmap("/Users/danamir/PycharmProjects/odd-perekrestok/img/perekr-4.jpg", 150, 150)
bitmap_4 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap())
bitmap_4.SetBitmap(wx.Bitmap(img))
grid_sizer_3.Add(bitmap_4, 0, 0, 0)
img = self.scale_bitmap("/Users/danamir/PycharmProjects/odd-perekrestok/img/perekr-t.jpg", 150, 150)
bitmap_5 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap())
bitmap_5.SetBitmap(wx.Bitmap(img))
grid_sizer_3.Add(bitmap_5, 0, 0, 0)
sizer_1.Add(grid_sizer_3, 1, wx.CENTER, 0)
label_15 = wx.StaticText(self, wx.ID_ANY, u"Вам необходимо рассчитать:")
label_15.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
sizer_1.Add(label_15, 0, 0, 0)
label_16 = wx.StaticText(self, wx.ID_ANY, u"Ширину проезжей части \n горизонтальной улицы")
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)
self.bitmap_2 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap(75, 75))
self.bitmap_2.Hide()
grid_sizer_2.Add(self.bitmap_2, 0, wx.ALIGN_CENTER, 0)
label_17 = wx.StaticText(self, wx.ID_ANY, u"Ширину проезжей части \n вертикальной улицы")
grid_sizer_2.Add(label_17, 0, 0, 0)
grid_sizer_2.Add(self.text_ctrl_2, 0, wx.ALIGN_CENTER, 0)
self.bitmap_3 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap(75, 75))
self.bitmap_3.Hide()
grid_sizer_2.Add(self.bitmap_3, 0, 0, 0)
sizer_1.Add(grid_sizer_2, 1, wx.EXPAND, 0)
self.btn_page3 = wx.Button(self, wx.ID_ANY, u"Далее", wx.DefaultPosition, wx.DefaultSize, 0)
btn_sizer.Add(self.btn_page3, 0, wx.ALIGN_BOTTOM | wx.ALIGN_RIGHT | wx.ALL, 5)
sizer_1.Add(btn_sizer, 1, wx.EXPAND, 0)
self.btn_page3.Bind(wx.EVT_BUTTON, self.go_page3)
self.SetSizer(sizer_1)
self.Layout()
def good(self):
self.img1 = "/Users/danamir/PycharmProjects/odd-perekrestok/img/good.jpg"
self.img4 = self.scale_bitmap(self.img1, 50, 50)
self.bitmap_2.SetBitmap(wx.Bitmap(self.img1))
self.bitmap_2.Show()
self.Refresh()
def bad(self):
self.img2 = "/Users/danamir/PycharmProjects/odd-perekrestok/img/error.jpg"
self.img3 = self.scale_bitmap(self.img2, 70, 50)
self.bitmap_3.SetBitmap(wx.Bitmap(self.img3))
self.bitmap_3.Show()
self.Refresh()
def set_kat_dor(self):
self.kolvo_polosv_vert.SetLabel(str(random.randint(2, 4)))
self.kolvo_polosv_horiz.SetLabel(str(random.randint(2, 4)))
self.kat_horizont.SetLabel(str(random.randint(2, 4)))
self.kat_vertical.SetLabel(str(random.randint(2, 4)))
def proverka_vvoda(self, event):
self.pr_Vert = int(self.kolvo_polosv_horiz.GetLabel()) * 3.75
self.pr_hor = int(self.kolvo_polosv_horiz.GetLabel()) * 3.75
print(self.pr_hor)
print(self.pr_Vert)
if len(self.text_ctrl_1.GetValue()) > 0:
if str(self.pr_hor) == self.text_ctrl_1.GetValue():
self.file = open("123", "w").close()
self.file = open("123", "w")
self.file.writelines(self.text_ctrl_1.GetValue()+"\n")
self.file.close()
print("good")
self.bitmap_2.Hide()
self.img1 = "/Users/danamir/PycharmProjects/odd-perekrestok/img/good.jpg"
self.img4 = self.scale_bitmap(self.img1, 50, 50)
self.bitmap_2.SetBitmap(wx.Bitmap(self.img4))
self.bitmap_2.Show()
self.Refresh()
else:
print("bad")
self.bitmap_2.Hide()
self.img2 = "/Users/danamir/PycharmProjects/odd-perekrestok/img/error.jpg"
self.img3 = self.scale_bitmap(self.img2, 70, 50)
self.bitmap_2.SetBitmap(wx.Bitmap(self.img3))
self.bitmap_2.Show()
self.text_ctrl_1.SetValue(str(self.pr_hor))
self.Refresh()
if len(self.text_ctrl_2.GetValue()) > 0:
if str(self.pr_Vert) == self.text_ctrl_2.GetValue() and len(self.text_ctrl_2.GetValue()) > 0:
print("good")
self.bitmap_3.Hide()
self.img1 = "/Users/danamir/PycharmProjects/odd-perekrestok/img/good.jpg"
self.img4 = self.scale_bitmap(self.img1, 50, 50)
self.bitmap_3.SetBitmap(wx.Bitmap(self.img4))
self.bitmap_3.Show()
self.Refresh()
else:
print("Bad")
self.bitmap_3.Hide()
self.img2 = "/Users/danamir/PycharmProjects/odd-perekrestok/img/error.jpg"
self.img3 = self.scale_bitmap(self.img2, 70, 50)
self.bitmap_3.SetBitmap(wx.Bitmap(self.img3))
self.bitmap_3.Show()
self.text_ctrl_2.SetValue(str(self.pr_Vert))
self.Refresh()
def proverka_radiobtn(self):
self.s = 1
print(self.radio_btn_2.GetValue())
print(self.radio_btn_3.GetValue())
if self.radio_btn_2.GetValue() == self.radio_btn_2.GetValue():
self.error_radio_btn()
self.s = 0
return self.s
def go_page3(self, event):
from gui import page3
page3.Page3.OnInit(page3)
self.Destroy()
def proverka_radiobtn(self):
self.s = 1
print(self.radio_btn_2.GetValue())
print(self.radio_btn_3.GetValue())
if self.radio_btn_2.GetValue() == self.radio_btn_2.GetValue():
self.error_radio_btn()
self.s = 0
return self.s
def go_page3(self, event):
from gui import page3
page3.Page3.OnInit(page3)
self.Destroy()
class SecondPage(wx.App):
def OnInit(self):
self.frame = SecondPageFrame(None, wx.ID_ANY, "")
self.frame.Center()
self.frame.Show()
return True
def OnInit(self):
self.frame = SeconPageFrame(None, wx.ID_ANY, "")
self.SetTopWindow(self.frame)
self.frame.Show()
return True
# end of class SecondPage
if __name__ == "__main__":
SeconPage = SecondPage(0)
SeconPage.MainLoop()
SeconPage = SecondPage(0)
SeconPage.MainLoop()