Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/09/2009, à 19:39

Elzen

Images PyGTK : fond de fenêtre ; retaillage.

Salut les gens ^^ J'ai deux petits problèmes concernant PyGTK et sa gestion des images.

Pour commencer, ça fait un moment que j'essaye de mettre une image de fond sur une fenêtre. Après moult recherches, j'ai fini par trouver ce qui semble être une marche à suivre, qui ne génère pas d'erreurs, mais qui semble n'avoir strictement aucun effet (le fond de la fenêtre reste gris). Voici un exemple simplifié :

#! /usr/bin/python
# -*- coding:Utf-8 -*-

import gtk

def destroy(widget, data=None):
	gtk.main_quit()

win = gtk.Window()
win.connect("destroy", destroy)
win.set_app_paintable(True)
win.resize(778, 456)
win.move(123, 72)
win.realize()

pixbuf = gtk.gdk.pixbuf_new_from_file("Wallpapers/Divers/Welcome.png")
pixbuf.scale_simple(778, 456, gtk.gdk.INTERP_NEAREST)
win.get_root_window().set_back_pixmap(pixbuf.render_pixmap_and_mask()[0], False)

win.show()
gtk.main()

(Ça doit d'ailleurs tourner chez vous si vous changez juste l'adresse de l'image. J'ai vérifié que la mienne était bien lue sans problème)
Je suppose (à vue de nez et en désespoir de cause) que le problème doit venir du get_root_window() qui ne doit pas renvoyer la bonne gtk.gdk.Window, mais dans ce cas, je ne vois pas quelle autre fonction appeler pour récupérer la bonne.

Deuxième problème : l'exemple ci-dessus est destiné à une fenêtre de taille fixe, mais dans le cas où la taille de ma fenêtre serait retaillable, existe-t-il une méthode simple pour que les images qu'elles contiennent (celle de fond, le cas échéant, mais aussi les images ajoutées directement en tant que composants) soient retaillées automatiquement à la nouvelle taille de fenêtre ? Un peu comme ce que l'on a dans un navigateur Internet quand on fixe une taille en pourcents.

Merci d'avance wink

Hors ligne

#2 Le 10/09/2009, à 20:11

Kanor

Re : Images PyGTK : fond de fenêtre ; retaillage.

Pour l'image solution
win.window.set_back_pixmap(pixbuf.render_pixmap_and_mask()[0], False)

big_smile

Hors ligne

#3 Le 10/09/2009, à 20:23

Elzen

Re : Images PyGTK : fond de fenêtre ; retaillage.

Tout simplement ^^

J'étais sûr d'avoir essayé, j'avais dû faire une faute de frappe sans m'en rendre compte.

Merci wink

Dernière modification par ArkSeth (Le 10/09/2009, à 20:23)

Hors ligne

#4 Le 26/09/2009, à 11:54

Elzen

Re : Images PyGTK : fond de fenêtre ; retaillage.

Petit up de routine pour la seconde question : est-ce que quelqu'un saurait m'expliquer comment retailler une image automatiquement en fonction des modifications de taille sur la fenêtre la contenant ?

Hors ligne

#5 Le 26/09/2009, à 19:34

Anium

Re : Images PyGTK : fond de fenêtre ; retaillage.

Il faut que tu regardes du côté des signaux size-allocate et size-request.

Tu recupéres la nouvelle taille, tu redimenssiones ton pixbuf et tu le remets en fond de fenêtre.

Hors ligne

#6 Le 26/09/2009, à 23:26

Elzen

Re : Images PyGTK : fond de fenêtre ; retaillage.

Donc pas d'autre choix que de retailler manuellement ?

J'vais essayer de me débrouiller comme ça, alors. Merci wink

Hors ligne

#7 Le 27/09/2009, à 00:14

Elzen

Re : Images PyGTK : fond de fenêtre ; retaillage.

Bon... je crois que j'ai plus ou moins réussi à me dépatouiller comme ça... sauf que ça coince sur la démaximisation de la fenêtre : l'image reste à la taille la plus grande, et donc, comme c'est un objet gtk.Image(), la fenêtre est démaximisée, mais conserve sa taille maximisée hmm

Dernière modification par ArkSeth (Le 27/09/2009, à 00:14)

Hors ligne

#8 Le 27/09/2009, à 11:01

Anium

Re : Images PyGTK : fond de fenêtre ; retaillage.

J'ai trouvé ce lien.

Tu trouveras peut-être une réponse.

Hors ligne