Interface para gerar papel de parede que muda com tempo

Iniciado por diogo.mvieira, 25 de Outubro de 2010, 19:48

tópico anterior - próximo tópico

diogo.mvieira

Resolvido!

homerobono


diogo.mvieira

Desculpe, na verdade não foi resolvido, mas sim desisti da solução. Meu problema é que fiz um programa que inclusive tem uma versão bem beta disponível em: http://elp.org.br/diogo_acessories/TG_GUI/ em que ele gera papéis de parede que mudam com o tempo de acordo com uma pasta de imagens escolhida.
O programa foi feito em python 2.7 e o problema é que estou usando commands para executar o gconf e aplicar o papel de parede, mas quando existe uma pasta com caracteres especiais ele não encontra...

Kamei Hyoga

E só esse é o problema? Se for isso, basta não usar nomes com caracteres especiais

diogo.mvieira

Sim, mas aí o utilizador não pode escolher nenhuma pasta que tenha caracteres especiais ou até mesmo espaço no nome, e gostaria de contornar esse problema. O erro é que não consegue converter a string

irtigor

#5
Tipo isso?

import subprocess
import os
subprocess.call(['/usr/bin/gconftool-2','--type', 'string', '--set', '/desktop/gnome/background/picture_filename', os.path.join(os.path.expanduser('~'),'imagens','wallpapers','é com espaço.png')])

Testei no interpretador e funcionou.

diogo.mvieira

Então, irtigor. É exatamente isso que utilizei, mas ao invés do subprocess utilizei o commands, pois o subprocess está caindo em desuso. O problema é do caminho, mas não do nome das imagens.
Usei isso:
commands.getoutput('/usr/bin/gconftool-2 --type string --set /desktop/gnome/background/picture_filename '+curdir+'/'+self.text_ctrl_1.GetValue()+'.xml')


Usei o curdir como o diretório que é escolhido pelo usuário e o self.text_ctrl_1.GetValue() é o nome escolhido pelo usuário. Usar o path.join altera em algo ao invés de usar a soma de strings normal? Talvez seja isso...
Vou testar aqui e posto o resultado.
Obrigado pela ajuda!

irtigor

#7
Acho que o que você falou do subprocess não confere:
http://docs.python.org/py3k//library/subprocess.html (prova que ele vai continuar)
http://www.python.org/doc//current/library/subprocess.html (fala que ele surgiu para substituir, entre outros, o commands.*)
http://www.python.org/doc//current/library/commands.html (fala que no python 3.x o getoutput() vai para o subprocess)

Ou eu perdi algum ponto na documentação?


import subprocess,os
subprocess.call(['/usr/bin/gconftool-2','--type', 'string', '--set', '/desktop/gnome/background/picture_filename', os.path.join(os.path.expanduser('~'),'é com espaços','não sei escolher nome.jpg')])

Também funcionou, e se não me engano o culpado é o subprocess.

Outra alternativa está no pipes

>>> import pipes
>>> print (pipes.quote(ur'alguma coisa cheia de espaços é...'))
'alguma coisa cheia de espaços é...'


Só que isso não está na documentação (http://bugs.python.org/issue9723).

---
Falando de coisas não documentadas, o mkarg() do commands deve fazer alguma coisa desse tipo, mas como você pode ver no link acima, no python 3.x ele cai fora (olhe o porque :) ).

diogo.mvieira

Fico muito feliz com toda a ajuda! O problema era só o path.join mesmo, mas aproveitei e alterei o subprocess logo.
Obrigado por tudo! Logo sairá uma versão boa para ajudar a comunidade Gnome
Abraços!

irtigor

Se funcionou, altere o titulo da primeira mensagem, adicionando um [Resolvido].

sigur

opa, estou curioso pra usar isso. já está podendo instalar? ou existe algum outro soft pronto pra isso?

valeu