Files
RotorEskavator/main.py
Александр Геннадьевич Сальный aecf9d9487 Initila commit
2022-08-18 10:14:48 +03:00

275 lines
9.4 KiB
Python
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.

# -*- 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()