Dúvida como setar imagem numa band_detail

0 views
Skip to first unread message

Frederico Vieira

unread,
Oct 8, 2015, 12:07:52 AM10/8/15
to geral...@googlegroups.com
Pessoal, boa noite.

O grupo está inativo há muito tempo e não sei se a galera ainda está usando o geraldo. Eu ainda uso em alguns projetos e me surgiu uma dúvida:

Tenho um relatório simples onde são listados quatro elementos numa band_detail, sendo que um desses elementos é uma imagem PIL. Alguém sabe me dizer como setar a imagem na propriedade _image da classe Image?

    class band_detail(ReportBand):
        height = 0.8*cm
        borders = {'all': False}
        auto_expand_height = True
        elements = [
            ObjectValue(attribute_name='nome', top=0, left=0, width=8*cm,
                        style={'fontName': 'Helvetica', 'fontSize': 9}),
            ObjectValue(attribute_name='codigo', top=0, left=8*cm,
                        style={'fontName': 'Helvetica', 'fontSize': 9}),
            ObjectValue(attribute_name='valor', top=0, left=12*cm,
                        style={'fontName': 'Helvetica', 'fontSize': 9}),
            Image(_image='???', left=16*cm, top=0),
        ]

Coloquei três ??? justamente onde está a minha dúvida. Eu tentei por meio de lambda, mas não obtive sucesso, dá um AttributeError na tentativa de obter a propriedade size de uma function.

--
Att,

________________________
Frederico Vieira Lima
62 8432-2809

Marcos Thomaz

unread,
Oct 8, 2015, 12:32:57 AM10/8/15
to geral...@googlegroups.com

--
You received this message because you are subscribed to the Google Groups "geraldo-pt" group.
To unsubscribe from this group and stop receiving emails from it, send an email to geraldo-pt+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Só uma pergunta: vai ser a mesma imagem em todos os details???


--


Marcos Thomaz da Silva
Analista de Tecnologia da Informação

Frederico Vieira

unread,
Oct 8, 2015, 5:28:36 AM10/8/15
to geral...@googlegroups.com

Não, cada linha uma imagem. Cada objeto na lista tem sua própria imagem.

Frederico Vieira

unread,
Oct 8, 2015, 7:10:06 AM10/8/15
to geral...@googlegroups.com
Colocar a mesma imagem é tranquilo, consegui de boa. O problema está quando são imagens diferentes. E no meu caso, cada objeto da lista tem sua própria imagem, que é um qrcode gerado a partir de valores obtidos de atributos de cada objeto na lista.

O qrcode já chega pronto para ser setado no atributo _image da classe Image. Porém a única forma que sei para acessar a instância de um objeto é por meio de lambda, e assim não está funcionando.

Marcos Thomaz

unread,
Oct 8, 2015, 1:21:45 PM10/8/15
to geral...@googlegroups.com
Teria como você fazer usando o beforeprint. Ate porque, a propriedade _image é protegida.

Frederico Vieira

unread,
Oct 13, 2015, 7:11:16 AM10/13/15
to geral...@googlegroups.com
Utilizando o evento before_print funcionou, porém achei estranho a forma que tive que fazer. Veja abaixo:

Criei o método:

def antes_de_imprimir(self, generator):
    self.image = self.instance.qrcode

E setei o mesmo desta forma:

report.find_by_name('qrcode').before_print = antes_de_imprimir

Seria muito mais fácil obter a instância do elemento, como o get_value do ObjectValue, e já setar direto na Image. Testei o método get_image porém não obtive sucesso. 

Outra coisa que tentei e não funcionou foi estender o método do_before_print dentro da classe band_detail. Consegui acessar todos os objetos dentro da lista elements, porém, todos estão com suas propriedades nulas. Não entendi porque as mesmas estavam assim.

Mas está tranquilo. Agora os qrcodes estão sendo gerados perfeitamente no relatório.

Obrigado pela dica.


Reply all
Reply to author
Forward
0 new messages