Glade, rapidamente e mudando uma imagem com código

2

Eu criei o modelo de aplicativo ubuntu padrão usando rapidamente e estou tentando descobrir como alterar a imagem exibida através de código.

A imagem padrão mostra um logotipo do Ubuntu com o caminho "... / media / background.png" dentro do glade.

Se eu abrir o arquivo python da janela de projetos (testWindow.py como o nome do projeto é test) e adicione as seguintes linhas na base da função finish_initializing (não alterando mais nada nos arquivos padrão criados),

self.PNG = self.builder.get_object("image1")
self.PNG.set_from_file("../media/background.png")

O programa é executado, mas em vez do logotipo do ubuntu, o pequeno ícone de arquivo ausente é exibido. No entanto, nenhuma mensagem de erro é exibida no terminal e a alteração do arquivo png para outro png, ou movê-lo para o mesmo diretório que o arquivo python (alterando o segundo arquivo de linhas para "background.png") fornece o mesmo problema. Eu posso usar a função clear () para remover a imagem com sucesso, mas estou claramente fazendo algo errado e não consigo fazer nenhum progresso na documentação do widget de imagem.

No caso de ajudar a saber o que eu pretendo fazer, estou tentando criar um programa de flashcard simples, exibindo um caractere japonês e exigindo que o usuário insira a pronúncia correta e exiba outra imagem de um novo caractere se o usuário é bem sucedido.

Obrigado por qualquer ajuda que você possa dar!

    
por wnaftw 05.08.2013 / 11:56

1 resposta

1

O caminho que você está dando a set_from_file é relativo ao arquivo glade, mas não ao arquivo python. É melhor usar caminhos completos de qualquer maneira, como o uso de caminhos relativos, muitas vezes acaba tendo problemas quando você executa o aplicativo instalado. Fornece rapidamente uma boa função auxiliar para fornecer o caminho completo para um arquivo localizado na pasta data/ . Experimente:

from test_lib.testconfig import get_data_file

[....]   

    self.image = self.builder.get_object("image1")
    self.background = get_data_file("media/background.png")
    self.image.set_from_file(self.background)
    
por andrewsomething 05.08.2013 / 22:07