Необходимо построить график по нажатии кнопки после ввода данных и подсчета по формулам
Необходимо с подсчетом по формулам, построить график по нажатии кнопки после ввода данных.
График строиться из зависимости W по оси y от q по оси x интервале q=(0,1..1.5).
Также нужно сделать кнопку "обновить", чтобы без выхода из приложения можно было ввести еще раз данные и график (синхронное отображение и исчезновение графика с подсчетом ).
Если программа считает и выводит данные, то прописать зависимость для графика не получается .
Помогите,пожалуйста.Ссылка на файл программы: https://drive.google.com/file/d/1q-yNRaDwGaB9v_EeK3jl0tWWM1aU7GsK/view?usp=sharing. '''
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
# self.pushButton.clicked.connect(self.Calc)
self.pushButton.clicked.connect(self.calc)
#self.pushButton_2.clicked.connect(self.new)
def calc(self):
q = self.input_q.text()
dp = self.input_dp.text()
b = self.input_b.text()
PRO = self.input_PRO.text()
Pbr = self.input_Pbr.text()
if not q or not dp or not b or not PRO or not Pbr:
msg = QMessageBox.information(None,
'Внимание',
'Заполните все поля ввода.'
)
return
try:
q = float(q)
dp = float(dp)
b = float(b)
PRO = float(PRO)
Pbr = float(Pbr)
except Exception as e:
msg = QMessageBox.information(None,
'Внимание',
f'Заполните правильно поля ввода \n {e}.'
)
return
if b == 0 or PRO == 0 or Pbr == 0:
msg = QMessageBox.information(None,
'Внимание',
'division by zero.'
)
return
k = self._k(dp)
self.output_k.setText(f'{k:.3f}')
R = self._R(k, q)
self.output_R.setText(f'{R:.3f}')
Pp = self._Pp(R, b)
self.output_Pp.setText(f'{Pp:.3f}')
Pie = self._Pie(Pp, Pbr, PRO)
self.output_Pie.setText(f'{Pie:.3f}')
def _Pp(self, R, b):
op1 = -(R * R) / (2 * b * b)
op2 = 2.7182818284 ** op1
op3 = 1 - op2
return op3
def _Pie(self, Pp, Pbr, PRO):
op1 = Pp * Pbr * PRO
return op1
def _R(self, k, q):
op1 = k * (q ** (1. / 3))
return op1
def _k(self, dp):
op1 = 30 + 9.81 * dp
op2 = 29.4 * dp + 10
return op1 / op2
# def calc(self):
# x = (0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5)
# y = int()
# for i in range(3):
# self.graphicsView.plot(x, y[i], pen=(i, 3))
#def new(self):
#self.graphicsView.clear
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
'''
Ответы (1 шт):
Я не очень понимаю какой график вы собираетесь построить и не понял что у вас не получается.
Попробуйте так:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
import pyqtgraph as pg
from pyqtgraph import PlotWidget, plot
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1036, 590)
MainWindow.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
MainWindow.setStyleSheet(
"background:qconicalgradient(cx:0.488636, cy:0.602, angle:179.8, stop:0.329545 rgba(0, 0, 0, 255), stop:0.852273 rgba(255, 255, 255, 255))")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(260, -10, 641, 571))
self.label.setStyleSheet("background:none;")
self.label.setText("")
self.label.setObjectName("label")
self.label_8 = QtWidgets.QLabel(self.centralwidget)
self.label_8.setGeometry(QtCore.QRect(730, 70, 41, 31))
self.label_8.setStyleSheet("\n"
"font: 15pt \"TypoUpright BT\";\n"
"color:#ffb703;\n"
"background-color:none;")
self.label_8.setObjectName("label_8")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(10, 220, 491, 31))
self.label_5.setStyleSheet("\n"
"font: 20pt \"TypoUpright BT\";\n"
"color:#ffb703;\n"
"background-color:#000;")
self.label_5.setObjectName("label_5")
self.input_b = QtWidgets.QLineEdit(self.centralwidget)
self.input_b.setGeometry(QtCore.QRect(590, 120, 131, 31))
self.input_b.setStyleSheet("color:#ffb703;\n"
"font: 20pt \"MS Shell Dlg 2\";\n"
"background-color:#000;\n"
"border- radius : 30;\n"
"")
self.input_b.setObjectName("input_b")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(780, 20, 251, 41))
font = QtGui.QFont()
font.setFamily("MS Shell Dlg 2")
font.setPointSize(20)
font.setBold(False)
font.setItalic(False)
font.setWeight(9)
self.pushButton.setFont(font)
self.pushButton.setStyleSheet("QPushButton{\n"
"font: 75 20pt \"MS Shell Dlg 2\";\n"
"color:#fff;\n"
"background-color:#000;\n"
"border- radius: 30;\n"
"}\n"
"QPushButton:hover{\n"
"font: 20pt \"TypoUpright BT\";\n"
"color:#ffb703;\n"
"background-color:#35362d;\n"
"border- radius: 30;\n"
"}\n"
"QPushButton:pressed{\n"
"font: 20pt \"TypoUpright BT\";\n"
"color:#deb316;\n"
"background-color:#8c897b;\n"
"border- radius: 30;\n"
"}\n"
"\n"
"\n"
"piqtgraph")
self.pushButton.setObjectName("pushButton")
self.input_PRO = QtWidgets.QLineEdit(self.centralwidget)
self.input_PRO.setGeometry(QtCore.QRect(590, 220, 131, 31))
self.input_PRO.setStyleSheet("color:#ffb703;\n"
"font: 20pt \"MS Shell Dlg 2\";\n"
"background-color:#000;\n"
"border- radius : 30;\n"
"")
self.input_PRO.setObjectName("input_PRO")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(10, 70, 361, 31))
self.label_2.setStyleSheet("\n"
"font: 20pt \"TypoUpright BT\";\n"
"color:#ffb703;\n"
"background-color:#000;")
self.label_2.setObjectName("label_2")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(10, 170, 531, 31))
self.label_4.setStyleSheet("\n"
"font: 20pt \"TypoUpright BT\";\n"
"color:#ffb703;\n"
"background-color:#000;")
self.label_4.setObjectName("label_4")
self.input_q = QtWidgets.QLineEdit(self.centralwidget)
self.input_q.setGeometry(QtCore.QRect(590, 20, 131, 31))
self.input_q.setStyleSheet("color:#ffb703;\n"
"font: 20pt \"MS Shell Dlg 2\";\n"
"background-color:#000;\n"
"border- radius: 60;\n"
"")
self.input_q.setText("")
self.input_q.setObjectName("input_q")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(10, 20, 451, 31))
self.label_3.setAutoFillBackground(False)
self.label_3.setStyleSheet("font: 20pt \"TypoUpright BT\";\n"
"color:#ffb703;\n"
"background-color:#000;\n"
"")
self.label_3.setObjectName("label_3")
self.input_dp = QtWidgets.QLineEdit(self.centralwidget)
self.input_dp.setGeometry(QtCore.QRect(590, 70, 131, 31))
self.input_dp.setStyleSheet("color:#ffb703;\n"
"font: 20pt \"MS Shell Dlg 2\";\n"
"background-color:#000;\n"
"border- radius : 30;\n"
"")
self.input_dp.setObjectName("input_dp")
self.input_Pbr = QtWidgets.QLineEdit(self.centralwidget)
self.input_Pbr.setGeometry(QtCore.QRect(590, 170, 131, 31))
self.input_Pbr.setStyleSheet("color:#ffb703;\n"
"font: 20pt \"MS Shell Dlg 2\";\n"
"background-color:#000;\n"
"border- radius : 30;\n"
"")
self.input_Pbr.setObjectName("input_Pbr")
self.label_7 = QtWidgets.QLabel(self.centralwidget)
self.label_7.setGeometry(QtCore.QRect(730, 20, 31, 31))
self.label_7.setStyleSheet("\n"
"font: 15pt \"TypoUpright BT\";\n"
"color:#ffb703;\n"
"background-color:none;")
self.label_7.setObjectName("label_7")
self.label_9 = QtWidgets.QLabel(self.centralwidget)
self.label_9.setGeometry(QtCore.QRect(730, 120, 31, 31))
self.label_9.setStyleSheet("\n"
"font: 15pt \"TypoUpright BT\";\n"
"color:#ffb703;\n"
"background-color:none;")
self.label_9.setObjectName("label_9")
self.label_11 = QtWidgets.QLabel(self.centralwidget)
self.label_11.setGeometry(QtCore.QRect(10, 120, 371, 31))
self.label_11.setStyleSheet("\n"
"font: 20pt \"TypoUpright BT\";\n"
"color:#ffb703;\n"
"background-color:#000;")
self.label_11.setObjectName("label_11")
self.label_12 = QtWidgets.QLabel(self.centralwidget)
self.label_12.setGeometry(QtCore.QRect(10, 440, 351, 31))
self.label_12.setStyleSheet("\n"
"font: 15pt \"TypoUpright BT\";\n"
"color:#fab505;\n"
"background-color:#fff;")
self.label_12.setObjectName("label_12")
self.label_13 = QtWidgets.QLabel(self.centralwidget)
self.label_13.setGeometry(QtCore.QRect(10, 390, 361, 31))
self.label_13.setStyleSheet("\n"
"font: 15pt \"TypoUpright BT\";\n"
"color:#fab505;\n"
"background-color:#fff;")
self.label_13.setObjectName("label_13")
self.label_14 = QtWidgets.QLabel(self.centralwidget)
self.label_14.setGeometry(QtCore.QRect(10, 340, 361, 31))
self.label_14.setStyleSheet("\n"
"font: 15pt \"TypoUpright BT\";\n"
"color:#fab505;\n"
"background-color:#fff;fff")
self.label_14.setObjectName("label_14")
self.label_15 = QtWidgets.QLabel(self.centralwidget)
self.label_15.setGeometry(QtCore.QRect(10, 490, 361, 31))
self.label_15.setStyleSheet("\n"
"font: 15pt \"TypoUpright BT\";\n"
"color:#fab800;\n"
"background-color:#fff")
self.label_15.setObjectName("label_15")
self.label_10 = QtWidgets.QLabel(self.centralwidget)
self.label_10.setGeometry(QtCore.QRect(810, 60, 399, 269))
self.label_10.setStyleSheet("background:none")
self.label_10.setText("")
self.label_10.setObjectName("label_10")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(780, 70, 251, 41))
font = QtGui.QFont()
font.setFamily("MS Shell Dlg 2")
font.setPointSize(20)
font.setBold(False)
font.setItalic(False)
font.setWeight(9)
self.pushButton_2.setFont(font)
self.pushButton_2.setStyleSheet("QPushButton{\n"
"font: 75 20pt \"MS Shell Dlg 2\";\n"
"color:#fff;\n"
"background-color:#000;\n"
"border- radius: 30;\n"
"}\n"
"QPushButton:hover{\n"
"font: 20pt \"TypoUpright BT\";\n"
"color:#f3f700;\n"
"background-color:#35362d;\n"
"border- radius: 30;\n"
"}\n"
"QPushButton:pressed{\n"
"font: 20pt \"TypoUpright BT\";\n"
"color:#deb316;\n"
"background-color:#8c897b;\n"
"border- radius: 30;\n"
"}\n"
"\n"
"\n"
"piqtgraph")
self.pushButton_2.setObjectName("pushButton_2")
self.output_k = QtWidgets.QLabel(self.centralwidget)
self.output_k.setGeometry(QtCore.QRect(340, 440, 71, 31))
self.output_k.setStyleSheet("color:#fab505;\n"
"font: 18pt \"MS Shell Dlg 2\";\n"
"border- radius : 30;\n"
"background:qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.952, fx:0.5, fy:0.5, stop:0.505682 rgba(255, 255, 255, 255), stop:0.642045 rgba(0, 0, 0, 255))")
self.output_k.setText("")
self.output_k.setObjectName("output_k")
self.output_R = QtWidgets.QLabel(self.centralwidget)
self.output_R.setGeometry(QtCore.QRect(340, 390, 71, 31))
self.output_R.setStyleSheet("color:#fab505;\n"
"font: 18pt \"MS Shell Dlg 2\";\n"
"border- radius : 30;\n"
"background:qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.952, fx:0.5, fy:0.5, stop:0.505682 rgba(255, 255, 255, 255), stop:0.642045 rgba(0, 0, 0, 255))")
self.output_R.setText("")
self.output_R.setObjectName("output_R")
self.output_Pp = QtWidgets.QLabel(self.centralwidget)
self.output_Pp.setGeometry(QtCore.QRect(340, 340, 71, 31))
self.output_Pp.setStyleSheet("color:#fab505;\n"
"font: 18pt \"MS Shell Dlg 2\";\n"
"border- radius : 30;\n"
"background:qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.952, fx:0.5, fy:0.5, stop:0.505682 rgba(255, 255, 255, 255), stop:0.642045 rgba(0, 0, 0, 255))")
self.output_Pp.setText("")
self.output_Pp.setObjectName("output_Pp")
self.output_Pie = QtWidgets.QLabel(self.centralwidget)
self.output_Pie.setGeometry(QtCore.QRect(340, 490, 71, 31))
self.output_Pie.setStyleSheet("color:#fab505;\n"
"font: 18pt \"MS Shell Dlg 2\";\n"
"border- radius : 30;\n"
"background:qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.952, fx:0.5, fy:0.5, stop:0.505682 rgba(255, 255, 255, 255), stop:0.642045 rgba(0, 0, 0, 255))")
self.output_Pie.setText("")
self.output_Pie.setObjectName("output_Pie")
self.output_k_2 = QtWidgets.QLabel(self.centralwidget)
self.output_k_2.setGeometry(QtCore.QRect(330, 330, 81, 41))
self.output_k_2.setStyleSheet("\n"
"background:#000")
self.output_k_2.setText("")
self.output_k_2.setObjectName("output_k_2")
self.output_k_3 = QtWidgets.QLabel(self.centralwidget)
self.output_k_3.setGeometry(QtCore.QRect(330, 380, 81, 41))
self.output_k_3.setStyleSheet("\n"
"background:#000")
self.output_k_3.setText("")
self.output_k_3.setObjectName("output_k_3")
self.output_k_4 = QtWidgets.QLabel(self.centralwidget)
self.output_k_4.setGeometry(QtCore.QRect(330, 430, 81, 41))
self.output_k_4.setStyleSheet("\n"
"background:#000")
self.output_k_4.setText("")
self.output_k_4.setObjectName("output_k_4")
self.output_k_5 = QtWidgets.QLabel(self.centralwidget)
self.output_k_5.setGeometry(QtCore.QRect(330, 480, 81, 41))
self.output_k_5.setStyleSheet("\n"
"background:#000")
self.output_k_5.setText("")
self.output_k_5.setObjectName("output_k_5")
# self.graphicsView
self.graphicsView = PlotWidget(self.centralwidget)
self.graphicsView.setGeometry(QtCore.QRect(620, 270, 391, 241))
self.graphicsView.setStyleSheet("Background:none")
self.graphicsView.setObjectName("graphicsView")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(690, 520, 261, 31))
self.label_6.setStyleSheet("font: 15pt \"TypoUpright BT\";\n"
"color:#fab505;\n"
"background:none\n"
"")
self.label_6.setObjectName("label_6")
self.label_17 = QtWidgets.QLabel(self.centralwidget)
self.label_17.setGeometry(QtCore.QRect(420, 390, 31, 31))
self.label_17.setStyleSheet("\n"
"font: 15pt \"TypoUpright BT\";\n"
"color:#ffb703;\n"
"background-color:none;")
self.label_17.setObjectName("label_17")
self.label_18 = QtWidgets.QLabel(self.centralwidget)
self.label_18.setGeometry(QtCore.QRect(420, 440, 61, 31))
self.label_18.setStyleSheet("\n"
"font: 15pt \"TypoUpright BT\";\n"
"color:#ffb703;\n"
"background-color:none;")
self.label_18.setObjectName("label_18")
self.label_19 = QtWidgets.QLabel(self.centralwidget)
self.label_19.setGeometry(QtCore.QRect(480, 430, 31, 31))
self.label_19.setStyleSheet("\n"
"font: 15pt \"TypoUpright BT\";\n"
"color:#ffb703;\n"
"background-color:none;")
self.label_19.setObjectName("label_19")
self.label_16 = QtWidgets.QLabel(self.centralwidget)
self.label_16.setGeometry(QtCore.QRect(610, 260, 411, 261))
self.label_16.setStyleSheet("background:#ffb739")
self.label_16.setText("")
self.label_16.setObjectName("label_16")
self.label.raise_()
self.label_16.raise_()
self.label_8.raise_()
self.label_5.raise_()
self.input_b.raise_()
self.pushButton.raise_()
self.input_PRO.raise_()
self.label_2.raise_()
self.label_4.raise_()
self.input_q.raise_()
self.label_3.raise_()
self.input_dp.raise_()
self.input_Pbr.raise_()
self.label_7.raise_()
self.label_9.raise_()
self.label_11.raise_()
self.label_12.raise_()
self.label_13.raise_()
self.label_14.raise_()
self.label_15.raise_()
self.label_10.raise_()
self.pushButton_2.raise_()
self.output_k_2.raise_()
self.output_k_3.raise_()
self.output_R.raise_()
self.output_Pp.raise_()
self.output_k_5.raise_()
self.graphicsView.raise_()
self.output_k_4.raise_()
self.output_Pie.raise_()
self.output_k.raise_()
self.label_17.raise_()
self.label_18.raise_()
self.label_19.raise_()
self.label_6.raise_()
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1036, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label_8.setText(_translate("MainWindow", "па"))
self.label_5.setText(_translate("MainWindow", "Введите вероятность :"))
self.pushButton.setText(_translate("MainWindow", "Произвести расчет"))
self.label_2.setText(_translate("MainWindow", "Введите давление :"))
self.label_4.setText(_translate("MainWindow", "Введите вероятность 2 :"))
self.label_3.setText(_translate("MainWindow", "Введите плотность (q) :"))
self.label_7.setText(_translate("MainWindow", "кг/м3"))
self.label_9.setText(_translate("MainWindow", "км"))
self.label_11.setText(_translate("MainWindow", "Введите рассотяние :"))
self.label_12.setText(_translate("MainWindow", "Коэффициент :"))
self.label_13.setText(_translate("MainWindow", "Радиус :"))
self.label_14.setText(_translate("MainWindow", "Вероятность 3 :"))
self.label_15.setText(_translate("MainWindow", "Ответ (W) :"))
self.pushButton_2.setText(_translate("MainWindow", "Обновить"))
self.label_6.setText(_translate("MainWindow", "График зависимости W=W(q) "))
self.label_17.setText(_translate("MainWindow", "мм"))
self.label_18.setText(_translate("MainWindow", ""))
self.label_19.setText(_translate("MainWindow", "1/3"))
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.calc)
#self.pushButton_2.clicked.connect(self.new)
def calc(self):
q = self.input_q.text()
dp = self.input_dp.text()
b = self.input_b.text()
PRO = self.input_PRO.text()
Pbr = self.input_Pbr.text()
if not q or not dp or not b or not PRO or not Pbr:
msg = QMessageBox.information(None,
'Внимание',
'Заполните все поля ввода.'
)
return
try:
q = float(q)
dp = float(dp)
b = float(b)
PRO = float(PRO)
Pbr = float(Pbr)
except Exception as e:
msg = QMessageBox.information(None,
'Внимание',
f'Заполните правильно поля ввода \n {e}.'
)
return
if b == 0 or PRO == 0 or Pbr == 0:
msg = QMessageBox.information(None,
'Внимание',
'division by zero.'
)
return
k = self._k(dp)
self.output_k.setText(f'{k:.3f}')
R = self._R(k, q)
self.output_R.setText(f'{R:.3f}')
Pp = self._Pp(R, b)
self.output_Pp.setText(f'{Pp:.3f}')
Pie = self._Pie(Pp, Pbr, PRO)
self.output_Pie.setText(f'{Pie:.3f}')
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
x = [q, dp, b, PRO, Pbr]
y = [0, k, R, Pp, Pie]
self.pg_calc(x, y)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
def _Pp(self, R, b):
op1 = -(R * R) / (2 * b * b)
op2 = 2.7182818284 ** op1
op3 = 1 - op2
return op3
def _Pie(self, Pp, Pbr, PRO):
op1 = Pp * Pbr * PRO
return op1
def _R(self, k, q):
op1 = k * (q ** (1. / 3))
return op1
def _k(self, dp):
op1 = 30 + 9.81 * dp
op2 = 29.4 * dp + 10
return op1 / op2
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
def pg_calc(self, x, y):
# ??? x = (0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5)
# ??? y = int()
# ??? for i in range(3):
# ??? self.graphicsView.plot(x, y[i], pen=(i, 3))
self.graphicsView.clear()
self.graphicsView.plot(x, y)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
