Initila commit
This commit is contained in:
274
main.py
Normal file
274
main.py
Normal 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()
|
||||||
BIN
requirements.txt
Normal file
BIN
requirements.txt
Normal file
Binary file not shown.
Reference in New Issue
Block a user