2010-04-08 7 views
1

Je fais un client Twitter avec PyQt, qui utilise WebKit pour dessiner la liste des tweets. Maintenant, j'essaie d'utiliser CSS pour définir une image d'arrière-plan dans le widget WebKit - mais l'image n'apparaîtra pas. Ceci est la partie pertinente du CSS:PyQt WebKit CSS image de fond ne montre pas

body                    
{                    
    background-image: url("gradient2.jpg");           
} 

Le nom du fichier est correctement orthographié, et il est situé dans le même répertoire que le programme Python, qui est aussi là que je commence le programme à partir (si le fichier image devrait être dans PWD).

Pour vérifier si WebKit cherche d'une manière ou d'une autre l'image dans le mauvais répertoire, j'ai exécuté mon programme via strace, qui crée un journal de tous les appels système effectués par le programme. Et étonnamment, le nom de l'image n'apparaît pas dans le journal - il semble donc que WebKit n'essaie même pas de le trouver.

Pour vérifier que mon CSS est utilisé à tous par WebKit, j'ai essayé de changer à une couleur de fond solide au lieu d'une image:

body                    
{                    
    background: #CCFFCC;           
} 

Et cela fonctionne. Donc, je sais que le CSS est utilisé, ce n'est pas le problème.

Se pourrait-il que WebKit refuse d'utiliser des fichiers "ordinaires" dans le système de fichiers, et que je doive en quelque sorte créer un fichier "ressource" contenant mon image dans Qt Designer?

Répondre

2

Essayez de supprimer les guillemets. De plus, gardez à l'esprit que si vous déclarez une règle de raccourci "background:" après une règle "backround-image:", l'image d'arrière-plan sera écrasée. En outre, le chemin du fichier doit être relatif au fichier css, pas au fichier source.

+0

Je l'ai essayé avec des guillemets, des guillemets simples, sans guillemets, y compris le « fond », et sans elle. En outre, le CSS est * dans * la source Python, je n'utilise pas un fichier CSS séparé (je ne pouvais pas le faire fonctionner.) Sue moi.) C'est comme si quelque chose de plus fondamental est faux. Comme je l'ai dit dans la question, selon le journal de bord, il semble que ce n'est même pas * en essayant * d'ouvrir le fichier image. – Enfors

+0

Que se passe-t-il si vous lui donnez une URL absolue? – graphicdivine

+0

Avec des guillemets doubles, et un chemin absolu, ça * fonctionne * - à ma grande surprise. Problème résolu, merci! Mais pourquoi le journal de strace indique-t-il qu'il ne cherchait même pas le fichier? Ah. Je pense que je comprends maintenant. Si je me souviens bien, strace ne trace pas les processus enfants par défaut - et c'est probablement l'un de ceux qui ont ouvert le fichier. – Enfors

0

vous pouvez utiliser l'arrière-plan image comme ceci:

body                    
{                    
    background-image: url("qrc:///gradient2.jpg");           
}