Forms Tkinter com valores obtidos por calculo

Bom dia! Estou a criar um form em Tkinter para um trabalho e pretendia que, neste caso, o preço do produto fosse calculado consoante o preço dos ingredientes que tem. Tenho uma classe dos ingredientes, uma classe do produto e uma classe de lista de ingredientes, onde tenho o codigo do produto, o codigo do ingrediente e a quantidade, para poder fazer a ligação entre as 2 classes. Como devo fazer para que o valor que apareça no “preco de produção” seja esse valor calculado e não um valor qualquer inserido pelo utilizador?

Tenho este codigo na classe produto

class produto:
# Dictionary of objects
obj = dict()
lst = list()
pos = 0
sortkey = ”
# Constructor: Called when an object is instantiated
def init(self, codigo, nome, categoria, pvenda, pproducao):
self._codigo=codigo
self._nome=nome
self._categoria=categoria
self._pvenda=pvenda
self._pproducao=pproducao

    produto.obj(codigo) = self
    produto.lst.append(codigo)
# Object properties
# getter methodes
# code property getter method
@property
def nome(self):
    return self._nome
@property
def codigo(self):
    return self._codigo
@property
def categoria(self):
    return self._categoria

@property
def pvenda(self):
    return self._pvenda
@pvenda.setter
def pvenda(self, pvenda):
    self._pvenda=pvenda

@property
def pproducao(self):
    return self._pproducao
@pproducao.setter
def pproducao(self, pproducao):
    self._pproducao=pproducao
    

#################################################

# Class method to implement constructor overloading
@classmethod
def from_string(cls, str_data):
    str_list = str_data.split(";")
    strarg = 'cls(str_list(0)'
    for i in range(1, len(str_list)):
        strarg += ',str_list(' + str(i) + ')'
    strarg += ')'
    return eval(strarg)
# Class methods to iterate (forward and backward) through the class objects
@classmethod
def next(cls):
    cls.pos += 1
    return cls.current()
@classmethod
def previous(cls):
    cls.pos -= 1
    return cls.current()
@classmethod
def current(cls):
    if cls.pos < 0:
        cls.pos = 0
        return None
    elif cls.pos >= len(cls.lst):
        cls.pos = len(cls.lst) - 1
        return None
    else:
        code = cls.lst(cls.pos)
        return cls.obj(code)
@classmethod
def first(cls):
    cls.pos = 0
    return cls.current()
@classmethod
def last(cls):
    cls.pos = len(cls.lst) - 1
    return cls.current()
# Object delete method
@classmethod
def remove(cls, p):
    cls.lst.remove(p)
    del cls.obj(p)
# Sort objects by attribute class methods
@classmethod
def orderfunc(cls, e):
    return getattr(cls.obj(e), cls.sortkey)
@classmethod
def sort(cls, att):
    cls.sortkey = att
    cls.lst.sort(key=cls.orderfunc)
# Write object to csv file
@classmethod
def write(cls, path = ''):
    if len(cls.lst) > 0:
        fh = open(path + cls.__name__ + '.csv', 'w')
        p = cls.obj(cls.lst(0))
        strprint = ""
        for att in list(p.__dict__.keys()):
            strprint += att(1:) + ';'
        fh.write(strprint(:-1) + 'n')
        for p in cls.obj.values():
            fh.write(p.__str__() + 'n')
        fh.close()
# Read objects from csv file
@classmethod
def read(cls, path = ''):
    cls.obj = dict()
    cls.lst = list()
    try:
        fh = open(path + cls.__name__ + '.csv', 'r')
        fh.readline()
        for p in fh:
            cls.from_string(p.strip())
        fh.close()
        
    except:
        print("erro ler -------------",path + cls.__name__ + '.csv')
        pass
# Instance method to obtain object info
def __str__(self):
    strprint = "f'"
    for att in list(self.__dict__.keys()):
        strprint += '{self.' + att + '};'
    strprint = strprint(:-1) + "'"
    return eval(strprint)

E pretendia aplicar ao preco de producao algo semelhante a: (df são dataframes adquiridos com o pandas)

def precoproduto(x):
soma=0
prod=df5(‘prodcodigo’).tolist()
ingredientes=df5(‘ingredientecodigo’).tolist()
quant=df5(‘quantidade’).tolist()
coding=df3(‘codigo’).tolist()
precos=df3(‘preco’).tolist()
for i in range (len(prod)):
if prod(i)==x:
ing=ingredientes(i)
soma=soma+quant(i)*precos(coding.index(ing))
return soma

print(‘Preço do produto x:’ + str(precoproduto(1)))