2009-08-12 7 views
3

Y at-il un moyen facile de changer la taille de la police des éléments de texte dans GTK? En ce moment, le mieux que je puisse faire est de faire set_markup sur une étiquette, avec quelque chose de stupide comme:Comment puis-je changer la taille de la police dans GTK?

lbl.set_markup("<span font_desc='Tahoma 5.4'>%s</span>" % text) 

Ce 1) me demande de définir la police, 2) semble comme beaucoup de frais généraux (ayant pour analyser le balisage), et 3) le rendrait gênant de changer la taille de la police des boutons et autres. Y a-t-il un meilleur moyen?

+0

J'ai été surpris aujourd'hui de découvrir que font_desc fonctionne uniquement avec la taille de police. Ce n'était pas évident pour moi. –

Répondre

7

Si vous voulez changer dans votre application police générale (s), je d laisser ce travail à gtkrc (devient alors une question de Google, et la requête « gtkrc police » nous amène à this ubuntu forums link qui a l'extrait suivant du fichier gtkrc):

style "font" 
{ 
font_name = "Corbel 8" 
} 
widget_class "*" style "font" 
gtk-font-name = "Corbel 8" 

(remplacez la police par celle dont vous avez besoin)

Ensuite, l'utilisateur bénéficiera d'une expérience cohérente et sera en mesure de modifier les paramètres facilement sans avoir besoin de piquer dans le code et sans que vous ayez à gérer le la gestion de votre code personnel lié à la configuration. Je comprends que vous pouvez rendre ce paramètre plus spécifique si vous avez une définition plus précise pour le widget_class.

YMMV pour différentes plates-formes, mais AFAIK ce fichier est toujours présent à un endroit si GTK est utilisé, et permet à l'utilisateur d'être en charge des détails de la présentation.

+0

est-il possible d'utiliser un fichier gtkrc personnalisé pour mon application? Si oui, comment puis-je faire cela? – Claudiu

+1

essayez l'idée à partir d'ici: http://www.daa.com.au/pipermail/pygtk/2008-December/016359.html –

+0

@AndrewY, merci pour votre réponse. Cela m'a aidé aujourd'hui. – ECC

3

En C, vous pouvez faire:

gtk_widget_modify_font(lbl, pango_font_description_from_string("Tahoma 5.4")); 

En PyGTK, je crois qu'il est quelque chose comme:

pangoFont = pango.FontDescription("Tahoma 5.4") 
lbl.modify_font(pangoFont) 
+0

En C cela créerait une fuite de mémoire, car une description de police pango doit être libérée avec 'pango_font_description_free()' après utilisation (ceci n'est pas évident dans la documentation de 'pango_font_description_from_string()'). A part ça, c'est une solution possible. –

Questions connexes