Как использовать переменную одной функции в другой функции?
Мне нужно использовать переменную одной функции в другой функции, как я должен перестроить синтаксис, чтобы получить верное выражение?
import sys
from PyQt5 import QtWidgets, uic
from pyqtgraph import PlotWidget, plot
import pyqtgraph as pg
import functions as fn
import numpy as np
import pandas as pd
class MainWindow(QtWidgets.QMainWindow):
h = 1.055 * (10 ** (-34)) # Планка, Джоули
m = 9.1 * (pow(10, -31)) # Масса электрона, кг
pi = 3.14 # Число ПИ
index = [1, 2, 3, 4, 5]
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
# Загрузите страницу интерфейса
uic.loadUi('ain.ui', self)
#A=self.lineEdit.text()
self.EnergyHistogram()
#self.plotBarChart()
self.pushButton.clicked.connect(self.EnergyTable)
# мы добавили метод plot(), который принимает два массива:
# temperature и hour, затем строит данные с помощью метода graphWidget.plot().
def plot(self):
#grid = QtWidgets.QGridLayout(self.graphWidget)
#grid.addWidget(self.graphWidget, 0, 0)
#self.graphWidget.plot(a,b=2)
pass
def check(self):
A = self.lineEdit.text()
def EnergyTable(self):
n = 5
i = 0
E = np.arange(n, dtype=float)
A = int(self.lineEdit.text()) * pow(10, -9)
for i in range(n):
E[i] = (pow(self.pi, 2) * pow(self.h, 2) * pow(i + 1, 2)) / (2 * self.m * pow(A, 2))
E_J = EnergyTable()
E_erg, E_ev = 0, 0
E_erg = fn.ERG(E_J)
E_eV = fn.eV(E_J)
table = {'Дж': E_J, 'эрг': E_erg, ' эВ': E_eV}
df = pd.DataFrame(table, index=self.index)
df = str(df)
self.label.setText(df)
return E_J
def EnergyHistogram(self):
E_J=
bg1 = pg.BarGraphItem(x=self.index, height=self.E_J, width=0.6, brush='r')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
Ответы (2 шт):
Автор решения: Denis640Kb
→ Ссылка
Чтобы получить значение функции, Вам необходимо её для начала вызвать.
Назначить переменной значение возвращаемой переменной.
И уже в дальнейшем её использовать.
def EnergyTable(self):
n = 5
i = 0
E = np.arange(n, dtype=float)
A = int(self.lineEdit.text()) * pow(10, -9)
for i in range(n):
E[i] = (pow(self.pi, 2) * pow(self.h, 2) * pow(i + 1, 2)) / (2 * self.m * pow(A, 2))
E_J = E
E_erg, E_ev = 0, 0
E_erg = fn.ERG(E_J)
E_eV = fn.eV(E_J)
index = [1, 2, 3, 4, 5]
table = {'Дж': E_J, 'эрг': E_erg, ' эВ': E_eV}
df = pd.DataFrame(table, index=index)
df = str(df)
self.label.setText(df)
return E_J
def EnergyHistogram(self):
E_J = EnergyTable(param)
bg1 = pg.BarGraphItem(x=self.index, height=E_J, width=0.6, brush='r')
Где param - это параметр который Вы передаёте в функцию EnergyTable.
Автор решения: Xander
→ Ссылка
Сложно говорить наверняка, не видя всего кода.
Но, кажется, можно просто заменить
return E_J
на
self.E_J = E_J
