Считывание строки в PyQt5
Сделал простенькое приложение, одна из строк которого считывает некую функцию и затем в коде должны выполниться вычисления и вывести график. Но проблема в том что функция self.ui.lineEdit.text()
считывает как строку в результате чего вычисления не выполняются, X и Y не переменные а двумерные массивы, так что функцией int() не обойтись. Если ввести значение Z в самом коде, то отлично все работает
fig = pylab.figure()
axes = Axes3D(fig)
first = int(self.ui.lineEdit_2.text())
second = int(self.ui.lineEdit_3.text())
h = float(self.ui.lineEdit_4.text())
x = np.arange(first, second, h)
y = np.arange(first, second, h)
x, y = np.meshgrid(x, y)
z = self.ui.lineEdit.text()
surf = axes.plot_surface(x, y, z, cmap=cm.coolwarm)
fig.colorbar(surf, shrink=0.5, aspect=5)
axes.set_xlabel('x', color="grey")
axes.set_ylabel('y', color="grey")
axes.set_zlabel('z', color="grey")
pylab.title("График")
pylab.show()
Ответы (1 шт):
Автор решения: eri
→ Ссылка
если в self.ui.lineEdit.text() написан текст "x*y", то посчитайте его
z=eval(self.ui.lineEdit.text())
Если там двумерный массив с квадратными скобками
например
[[ 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 0, 2, 4, 6, 8, 10, 12, 14],
[ 0, 3, 6, 9, 12, 15, 18, 21],
[ 0, 4, 8, 12, 16, 20, 24, 28],
[ 0, 5, 10, 15, 20, 25, 30, 35],
[ 0, 6, 12, 18, 24, 30, 36, 42],
[ 0, 7, 14, 21, 28, 35, 42, 49]]
то подойдет
z = np.array(eval( self.ui.lineEdit.text() ))
или
z = np.array(json.loads(self.ui.lineEdit.text()))