我有一段代码(信息框)
它接受输入值并使用另一段代码(DataManipulation)进行一些计算,以生成包含所有请求项的数据帧
这是info_box.py:
from PyQt5 import QtCore, QtGui, QtWidgets
from DataManipulation import DataManipulation
class Ui_ContactCreator(object):
def setupCreateContactUi(self, Form):
Form.setObjectName("Form")
Form.resize(426, 300)
self.verticalLayoutWidget = QtWidgets.QWidget(Form)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(180, 20, 161, 241))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.QU_INITIAL = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.QU_INITIAL.setObjectName("QU_INITIAL")
self.verticalLayout.addWidget(self.QU_INITIAL)
self.PRIX_VENTE_LT = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.PRIX_VENTE_LT.setObjectName("PRIX_VENTE_LT")
self.verticalLayout.addWidget(self.PRIX_VENTE_LT)
self.PRIX_ACHAT_LT = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.PRIX_ACHAT_LT.setObjectName("PRIX_ACHAT_LT")
self.verticalLayout.addWidget(self.PRIX_ACHAT_LT)
self.QU_ENTREE = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.QU_ENTREE.setObjectName("QU_ENTREE")
self.verticalLayout.addWidget(self.QU_ENTREE)
self.QU_SORTIE = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.QU_SORTIE.setObjectName("QU_SORTIE")
self.verticalLayout.addWidget(self.QU_SORTIE)
self.verticalLayoutWidget_2 = QtWidgets.QWidget(Form)
self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(20, 29, 160, 221))
self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.QU_INITIAL_label = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.QU_INITIAL_label.setObjectName("PRIX_VENTE_LT_label")
self.verticalLayout_2.addWidget(self.QU_INITIAL_label)
self.PRIX_VENTE_LT_label = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.PRIX_VENTE_LT_label.setObjectName("PRIX_VENTE_LT_label")
self.verticalLayout_2.addWidget(self.PRIX_VENTE_LT_label)
self.PRIX_ACHAT_LT_label = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.PRIX_ACHAT_LT_label.setObjectName("PRIX_ACHAT_LT_label")
self.verticalLayout_2.addWidget(self.PRIX_ACHAT_LT_label)
self.QU_ENTREE_label = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.QU_ENTREE_label.setObjectName("QU_ENTREE_label")
self.verticalLayout_2.addWidget(self.QU_ENTREE_label)
self.QU_SORTIE_label = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.QU_SORTIE_label.setObjectName("QU_SORTIE_label")
self.verticalLayout_2.addWidget(self.QU_SORTIE_label)
self.save_btn = QtWidgets.QPushButton(Form)
self.save_btn.setGeometry(QtCore.QRect(314, 262, 101, 31))
self.save_btn.setObjectName("save_btn")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
self.save_btn.clicked.connect(self.onButtonClicked)
def onButtonClicked(self):
DataManipulation(self.QU_INITIAL.text(), self.PRIX_VENTE_LT.text(), self.PRIX_ACHAT_LT.text(), self.QU_ENTREE.text(), self.QU_SORTIE.text())
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.QU_INITIAL_label.setText(_translate("Form", "Quantité initial"))
self.PRIX_VENTE_LT_label.setText(_translate("Form", "Prix de vente"))
self.PRIX_ACHAT_LT_label.setText(_translate("Form", "Prix d\'achat"))
self.QU_ENTREE_label.setText(_translate("Form", "Quantité achetée"))
self.QU_SORTIE_label.setText(_translate("Form", "Quantité vendue"))
self.save_btn.setText(_translate("Form", "Enregistrer"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_ContactCreator()
ui.setupCreateContactUi(Form)
Form.show()
sys.exit(app.exec_())
这是DataManipulation.py:
import numpy as np
import pandas as pd
a = ''
x = ''
y = ''
z = ''
j = ''
def DataManipulation(val, val1,val2,val3,val4):
global a, x, y, z, j
try:
a = float(val)
x = float(val1)
y = float(val2)
z = float(val3)
j = float(val4)
except:
print("Invalid Input")
gazoil(a, x, y, z, j)
def gazoil(val, val1, val2, val3, val4):
try:
QU_INITIAL = val
ARR_VENTE = np.array([])
ARR_ACHAT = np.array([])
ARR_ENTREE = np.array([])
ARR_SORTIE = np.array([])
ARR_STOCK = np.array([])
ARR_MONTANT_VENTE = np.array([])
ARR_MONTANT_ACHAT = np.array([])
except:
print("Invalid input")
try:
PRIX_VENTE_LT = val1
ARR_VENTE = np.append(ARR_VENTE, PRIX_VENTE_LT)
PRIX_ACHAT_LT = val2
ARR_ACHAT = np.append(ARR_ACHAT, PRIX_ACHAT_LT)
QU_ENTREE = val3
ARR_ENTREE = np.append(ARR_ENTREE, QU_ENTREE)
QU_SORTIE = val4
ARR_SORTIE = np.append(ARR_SORTIE, QU_SORTIE)
QU_STOCK = (val + val3) - (val4)
ARR_STOCK = np.append(ARR_STOCK, QU_STOCK)
MONTANT_VENTE = PRIX_VENTE_LT * QU_SORTIE
ARR_MONTANT_VENTE = np.append(ARR_MONTANT_VENTE, MONTANT_VENTE)
MONTANT_ACHAT = PRIX_ACHAT_LT * QU_ENTREE
ARR_MONTANT_ACHAT = np.append(ARR_MONTANT_ACHAT, MONTANT_ACHAT)
QU_INITIAL = QU_STOCK
except:
print('merci')
frame = {'Prix de vente': ARR_VENTE, "Prix d'achat": ARR_ACHAT, "Quantité entrée": ARR_ENTREE,
"Quantité sortie": ARR_SORTIE, "Quantité en stock": ARR_STOCK, "Montant Vente": ARR_MONTANT_VENTE,
"Montant achat": ARR_MONTANT_ACHAT}
global result
result = pd.DataFrame(frame)
问题是,每次触发信号(save_btn)时,我都希望不断获得一组新的输入,并将以前的数据帧与新的数据帧连接起来,以获得最后一个包含我插入的所有数据的漂亮数据帧,但似乎没有任何效果。我试图在gazoil()中设置一个循环,但当我第一次点击save_btn时,接口将冻结并停止运行
为了根据输入进行一些计算,然后每次将它们添加到数据帧中,我们可以执行以下操作
首先,我们定义我们的数据帧,我们将使用它来存储未来的数据帧。我们使用None来明确数据帧不存在
然后单击“保存按钮”后,我们检查输入是否有效。如果不是,我们打印一个错误。否则,我们将输入值和当前数据帧传递给函数
data_manipulation
在
data_manipulation
中,我们进行基本计算,根据计算创建一个新的数据帧,并将其与以前的数据帧(如果存在)合并完整代码:
相关问题 更多 >
编程相关推荐