Initila commit

This commit is contained in:
Александр Геннадьевич Сальный
2022-08-18 10:14:48 +03:00
commit aecf9d9487
2 changed files with 274 additions and 0 deletions

274
main.py Normal file
View File

@@ -0,0 +1,274 @@
# -*- 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()