我制作了一个汇率程序,我可以从终端使用它,我试图为我制作一个接口,但我不能将QLineEdit输入转换为float。 它给了我这个错误
回溯(最近一次呼叫最后一次): …,第73行,在 self.buton.clicked.connect(lambda:self.pressed(currency1,currency2,输入)) …,第79行,按 数量=浮动(输入) ValueError:无法将字符串转换为浮点:
self.lineEdit = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.lineEdit.setObjectName("lineEdit")
----
input=self.lineEdit.text()
----
self.buton.clicked.connect(lambda: self.pressed(currency1, currency2,input))
def pressed(self,currency1,currency2,input):
quantity = float(input)
if currency1 == "EUR":
self.label.setText("{} EUR = {} {}".format(quantity, currency2, float(self.json_data["rates"][currency2]) * quantity))
else:
self.label.setText("{} {} = {} {}".format(quantity, currency1, currency2, float(
(self.json_data["rates"][currency2] / self.json_data["rates"][currency1])) * quantity))
如果需要,这里是完整的代码。
from PyQt5 import QtCore, QtGui, QtWidgets
import requests
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Exchange")
Form.resize(850, 558)
self.buton=QtWidgets.QPushButton("Calculate")
self.verticalLayoutWidget_2 = QtWidgets.QWidget(Form)
self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(50, 60, 751, 351))
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.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.lineEdit = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout.addWidget(self.lineEdit)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.comboBox_2 = QtWidgets.QComboBox(self.verticalLayoutWidget_2)
self.comboBox_2.setObjectName("comboBox_2")
self.horizontalLayout.addWidget(self.comboBox_2)
self.comboBox = QtWidgets.QComboBox(self.verticalLayoutWidget_2)
self.comboBox.setObjectName("comboBox")
self.horizontalLayout.addWidget(self.comboBox)
self.verticalLayout.addLayout(self.horizontalLayout)
self.verticalLayout_2.addLayout(self.verticalLayout)
self.verticalLayout_2.addWidget(self.buton)
self.label = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.verticalLayout_2.addStretch()
self.label.setText("")
self.label.setObjectName("label")
self.verticalLayout_2.addWidget(self.label)
self.label.setText("Select currencies and enter the quantity")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
url = "http://data.fixer.io/api/latest?access_key=f79c72f7979f662b465bd28e40efa5cf&format=1"
response = requests.get(url)
self.json_data = response.json()
kurlar=self.json_data["rates"].keys()
for i in kurlar:
self.comboBox.addItem(i)
self.comboBox_2.addItem(i)
index=self.comboBox.findText("TRY",QtCore.Qt.MatchFixedString)
self.comboBox.setCurrentIndex(index)
self.comboBox_2.setCurrentIndex(index)
currency1=self.comboBox.currentText()
currency2=self.comboBox_2.currentText()
input=self.lineEdit.text()
self.buton.clicked.connect(lambda: self.pressed(currency1, currency2,input))
def pressed(self,currency1,currency2,input):
quantity = float(input)
if currency1 == "EUR":
self.label.setText("{} EUR = {} {}".format(quantity, currency2, float(self.json_data["rates"][currency2]) * quantity))
else:
self.label.setText("{} {} = {} {}".format(quantity, currency1, currency2, float(
(self.json_data["rates"][currency2] / self.json_data["rates"][currency1])) * quantity))
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
出现这种情况是因为您在开始时从lineEdit中获取文本,这就是为什么它是一个空字符串。按下按钮后,您应该从lineEdit中获取文本
相关问题 更多 >
编程相关推荐