Считывание строки в 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()))
→ Ссылка