217 lines
7.8 KiB
Python
Executable File
217 lines
7.8 KiB
Python
Executable File
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():
|
||
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()
|