Как считать из QTextEdit float значение?
Есть поле textEdit_LOT_SD, в которое вводиться float значение (одно) и при нажатии кнопки эта переменная передается в функцию в другой файл для последующей работы.
Как считать значение в виде float? Или перевести его в float?
Вот что имеется сейчас:
self.textEdit_LOT_SD=QTextEdit(self)
LOT_SD_r=self.textEdit_LOT_SD.toPlainText()
попытка добавить LOT_SD_m=float(LOT_SD_r) приводить к ошибке:
could not convert string to float
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Пожалуйста, предоставьте минимально-воспроизводимый пример, который демонстрирует проблему.
Странно использовать виджет QTextEdit для этих целей.
Класс QDoubleSpinBox предоставляет виджет счетчика, который принимает двойные значения.
import sys
from PyQt5.Qt import *
class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.textEdit_LOT_SD = QTextEdit(self)
self.spinBox = QDoubleSpinBox(self) # !!!
self.label = QLabel()
self.button = QPushButton('Click me')
self.button.clicked.connect(self.button_clicked)
self.layout = QVBoxLayout(self)
self.layout.addWidget(self.textEdit_LOT_SD)
self.layout.addWidget(self.spinBox)
self.layout.addWidget(self.label)
self.layout.addWidget(self.button)
self.textEdit_LOT_SD.setFocus()
def button_clicked(self):
if not self.textEdit_LOT_SD.toPlainText() or not self.spinBox.value():
self.textEdit_LOT_SD.setFocus()
return
try:
LOT_SD_r = float(self.textEdit_LOT_SD.toPlainText())
# -----------> ^ <--> v <-------------------------------------------------- !!!
SErm = LOT_SD_r / self.spinBox.value()
text = f'{LOT_SD_r} / {self.spinBox.value()} = {SErm:.3f}'
self.label.setText(text)
except:
self.textEdit_LOT_SD.setFocus()
return
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setFont(QFont("Times", 12, QFont.Bold))
demo = Demo()
demo.show()
sys.exit(app.exec_())
