# -*- coding: utf-8 -*- from numpy import mat import wx import wx.xrc import math class ResultDialog(wx.Dialog): def __init__(self, *args, **kw): super(ResultDialog, self).__init__(*args, **kw) self.InitUI() self.SetSize((250, 200)) self.SetTitle("Итоги рассчёта") def InitUI(self): pnl = wx.Panel(self) vbox = wx.BoxSizer(wx.VERTICAL) sb = wx.StaticBox(pnl, label='Colors') sbs = wx.StaticBoxSizer(sb, orient=wx.VERTICAL) sbs.Add(wx.RadioButton(pnl, label='256 Colors', style=wx.RB_GROUP)) sbs.Add(wx.RadioButton(pnl, label='16 Colors')) sbs.Add(wx.RadioButton(pnl, label='2 Colors')) hbox1 = wx.BoxSizer(wx.HORIZONTAL) hbox1.Add(wx.RadioButton(pnl, label='Custom')) hbox1.Add(wx.TextCtrl(pnl), flag=wx.LEFT, border=5) sbs.Add(hbox1) pnl.SetSizer(sbs) hbox2 = wx.BoxSizer(wx.HORIZONTAL) okButton = wx.Button(self, label='Ok') closeButton = wx.Button(self, label='Close') hbox2.Add(okButton) hbox2.Add(closeButton, flag=wx.LEFT, border=5) vbox.Add(pnl, proportion=1, flag=wx.ALL | wx.EXPAND, border=5) vbox.Add(hbox2, flag=wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM, border=10) self.SetSizer(vbox) okButton.Bind(wx.EVT_BUTTON, self.OnClose) closeButton.Bind(wx.EVT_BUTTON, self.OnClose) def OnClose(self, e): self.Destroy() class MyFrame1 (wx.Frame): def __init__(self, parent): wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition, size=wx.Size( 904, 538), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) self.SetForegroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOTEXT)) self.SetBackgroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOBK)) bSizer4 = wx.BoxSizer(wx.VERTICAL) self.LabelMadi = wx.StaticText( self, wx.ID_ANY, u"Московский автомобильно-дорожный государственный технический университет (МАДИ)", wx.DefaultPosition, wx.DefaultSize, 0) self.LabelMadi.Wrap(-1) self.LabelMadi.SetForegroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOTEXT)) bSizer4.Add(self.LabelMadi, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5) self.LabelKafedra = wx.StaticText( self, wx.ID_ANY, u"Кафедра дорожные машины", wx.DefaultPosition, wx.DefaultSize, 0) self.LabelKafedra.Wrap(-1) self.LabelKafedra.SetForegroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOTEXT)) bSizer4.Add(self.LabelKafedra, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5) gSizer10 = wx.GridSizer(0, 2, 0, 0) self.labelShirinaTransei = wx.StaticText( self, wx.ID_ANY, u"Введите ширину траншеи (0.2 - 1.5)м", wx.DefaultPosition, wx.DefaultSize, 0) self.labelShirinaTransei.Wrap(-1) gSizer10.Add(self.labelShirinaTransei, 0, wx.ALL, 5) self.inputShirinaTransei = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) gSizer10.Add(self.inputShirinaTransei, 0, wx.ALL, 5) self.labelGlubinaTransei = wx.StaticText( self, wx.ID_ANY, u"Введите глубину траншеи (0.1 - 4)м", wx.DefaultPosition, wx.DefaultSize, 0) self.labelGlubinaTransei.Wrap(-1) gSizer10.Add(self.labelGlubinaTransei, 0, wx.ALL, 5) self.InputGlubinaTransei = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) gSizer10.Add(self.InputGlubinaTransei, 0, wx.ALL, 5) self.LabelDlinaTransei = wx.StaticText( self, wx.ID_ANY, u"Введите длину траншеи (>5)м", wx.DefaultPosition, wx.DefaultSize, 0) self.LabelDlinaTransei.Wrap(-1) gSizer10.Add(self.LabelDlinaTransei, 0, wx.ALL, 5) self.InputDlinaTransei = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) gSizer10.Add(self.InputDlinaTransei, 0, wx.ALL, 5) self.LabelKolvoKovsei = wx.StaticText( self, wx.ID_ANY, u"Введите количество ковшей (6-30) шт", wx.DefaultPosition, wx.DefaultSize, 0) self.LabelKolvoKovsei.Wrap(-1) gSizer10.Add(self.LabelKolvoKovsei, 0, wx.ALL, 5) self.InputKolvoKovsei = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) gSizer10.Add(self.InputKolvoKovsei, 0, wx.ALL, 5) self.LabelWorkTime = wx.StaticText( self, wx.ID_ANY, u"Введите время на работу (>60) с", wx.DefaultPosition, wx.DefaultSize, 0) self.LabelWorkTime.Wrap(-1) gSizer10.Add(self.LabelWorkTime, 0, wx.ALL, 5) self.IntputWorkTime = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) gSizer10.Add(self.IntputWorkTime, 0, wx.ALL, 5) bSizer4.Add(gSizer10, 1, wx.EXPAND, 5) self.calculation = wx.Button( self, wx.ID_ANY, u"Рассчитать", wx.DefaultPosition, wx.DefaultSize, 0) bSizer4.Add(self.calculation, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5) self.calculation.Bind(wx.EVT_BUTTON, self.rass) self.SetSizer(bSizer4) self.Layout() self.Centre(wx.BOTH) def errPole(self): self.dlgResult = wx.MessageDialog( self, 'Введено не число. Исправьте для продолжения', 'Ошибка', wx.OK) self.val = self.dlgResult.ShowModal() if self.val == wx.ID_OK: self.dlgResult.Destroy() def errNull(self): self.dlgResult = wx.MessageDialog( self, 'Не все поля заполнены. Заполните все поля перед продолжением', 'Ошибка', wx.OK) self.val = self.dlgResult.ShowModal() if self.val == wx.ID_OK: self.dlgResult.Destroy() def errData(self): self.dlgResult = wx.MessageDialog( self, 'Введены неверные данные. Исправьте для продолжения работы', 'Ошибка', wx.OK) self.val = self.dlgResult.ShowModal() if self.val == wx.ID_OK: self.dlgResult.Destroy() def toFixed(numObj, digits=0): return f"{numObj:.{digits}f}" def rass(self, event): if len(self.inputShirinaTransei.GetValue()) == 0: self.errNull() return if len(self.InputGlubinaTransei.GetValue()) == 0: self.errNull() return if len(self.InputDlinaTransei.GetValue()) == 0: self.errNull() return if len(self.InputKolvoKovsei.GetValue()) == 0: self.errNull() return if len(self.IntputWorkTime.GetValue()) == 0: self.errNull() return if self.inputShirinaTransei.GetValue().replace('.', '', 1).isdigit() == False: self.errPole() return if self.InputGlubinaTransei.GetValue().replace('.', '', 1).isdigit() == False: self.errPole() return if self.InputDlinaTransei.GetValue().isnumeric() == False: self.errPole() return if self.InputKolvoKovsei.GetValue().isnumeric() == False: self.errPole() return if self.IntputWorkTime.GetValue().isnumeric() == False: self.errPole() return self.Btp = float(self.inputShirinaTransei.GetValue()) self.Htp = float(self.InputGlubinaTransei.GetValue()) self.lk = float(self.InputDlinaTransei.GetValue()) self.zk = float(self.InputKolvoKovsei.GetValue()) self.trab = float(self.IntputWorkTime.GetValue()) if (self.Btp > 1.5 or self.Btp < 0.2): self.errData() return if (self.Htp > 4 or self.Htp < 0.1): self.Data() return if (self.lk < 5): self.errData() return if (self.zk < 6 or self.zk > 30): self.errData() return if (self.trab < 60): self.errPole() return self.qx = self.Btp * self.Htp * self.lk self.veks = self.lk / self.trab self.omegap = (2 * math.pi * self.Btp * self.Htp * self.veks) / (self.zk * self.qx) self.Pm = (self.qx * self.zk * self.omegap) / (2 * math.pi) self.rsz = "qk = " + str(self.qx) + "\t м^3 \n" +\ "Vэкс = " + str(self.veks) + "\t м/c \n" + \ "Wp = " + str(self.omegap) + "\t c ^-1 \n" + \ "Пm = " + str(self.Pm) + "\t м^3/c \n" self.dlgResult = wx.MessageDialog( self, self.rsz, 'Результаты расчёта', wx.OK) self.dlgResult.ShowModal() if self.dlgResult == wx.ID_OK: self.dlgResult.Destroy() def __del__(self): pass if __name__ == '__main__': app = wx.App(False) panel = MyFrame1(parent=None) panel.Show() app.MainLoop()