Files
odd-perekrestok/gui/SecondPage.py
2018-12-08 09:32:31 +03:00

221 lines
8.0 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import wx
import random
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
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.__set_properties()
self.__do_layout()
self.set_kat_dor()
def __set_properties(self):
self.SetTitle("Расчёт цикла светофорного регулирования")
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_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)
label_7 = wx.StaticText(self, wx.ID_ANY, u"Категория \n горизонтальной улицы")
grid_sizer_1.Add(label_7, 0, wx.ALIGN_CENTER | wx.ALL, 10)
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)
label_9 = wx.StaticText(self, wx.ID_ANY, u"Категория \n вертикальной улицы")
grid_sizer_1.Add(label_9, 0, wx.ALIGN_CENTER, 0)
self.kat_vertical = wx.StaticText(self, wx.ID_ANY, "")
grid_sizer_1.Add(self.kat_vertical, 0, wx.ALIGN_CENTER, 0)
label10= wx.StaticText(self, wx.ID_ANY, u"Количество полос \n горизонтальной улицы")
grid_sizer_1.Add(label10, 0, wx.ALIGN_CENTER, 0)
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)
label_13 = wx.StaticText(self, wx.ID_ANY, u"Количество полос \n вертикальной улицы")
grid_sizer_1.Add(label_13, 0, wx.ALIGN_CENTER, 0)
self.kolvo_polosv_vert = wx.StaticText(self, wx.ID_ANY, "")
grid_sizer_1.Add(self.kolvo_polosv_vert, 0, wx.ALIGN_CENTER, 0)
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, ""))
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()
class SecondPage(wx.App):
def OnInit(self):
self.frame = SecondPageFrame(None, wx.ID_ANY, "")
self.frame.Center()
self.frame.Show()
return True
if __name__ == "__main__":
SeconPage = SecondPage(0)
SeconPage.MainLoop()