2009-08-12 4 views
0

Je veux que mon widget ressemble exactement à ce qu'il est maintenant, sauf pour être plus petit. Il comprend des boutons, des étiquettes, du texte, des images, etc. Existe-t-il un moyen de dire «mettre à l'échelle la moitié de la taille», et GTK doit-il faire tout le traitement d'image, le redimensionnement du widget, etc. Si non, quelle est la manière la plus facile d'accomplir ceci?Dans GTK, existe-t-il un moyen facile de mettre à l'échelle tous les widgets d'une quantité arbitraire?

Répondre

2

L'indépendance de la résolution a été travaillée par certains dev gtk, et voici une mise à jour avec un très gros patch pour l'introduire dans GTK. Le patch est cependant un an maintenant et il ne sait pas encore comment/quand/si elle va être inclus: (captures d'écran à la fin)

http://mail.gnome.org/archives/gtk-devel-list/2008-August/msg00044.html

+0

ce serait génial si je pouvais le faire fonctionner - merci pour le plomb! – Claudiu

1

Il n'existe pas de méthode intégrée pour ce faire. Pour ce faire, vous devrez prendre en compte ce qui «occupe de l'espace» dans votre interface utilisateur et comment le réduire.

Si votre interface utilisateur est principalement constituée de texte et d'images, vous pouvez utiliser une taille de police plus petite, puis réduire toutes les images d'un pourcentage approprié. Le dimensionnement du widget rétrécit automatiquement une fois que le texte et les images qu'ils affichent se rétrécissent (sauf si vous avez fait de mauvaises choses comme des hauteurs/largeurs de code, utilisez GtkFixed, etc.).

La partie délicate sera de déterminer la relation entre la taille du point de police et l'échelle de l'image.

EDIT:

Here's a post about the pygtk syntax to change the font size.

+0

Merci pour le conseil. Je n'ai pas fait de mauvaises choses avec reconnaissance =). Comment puis-je réduire la taille de la police? – Claudiu

2

Changement du thème de l'interface utilisateur n'est pas quelque chose que je recommande, mais vous pouvez le faire si vous le souhaitez, en utilisant un gtkrc personnalisé peut vous aider à changer la police et la façon dont les boutons sont dessinés, principalement à cause de le xthickness et l'ythickness.

import gtk 
file = "/path/to/the/gtkrc" 
gtk.rc_parse(file) 
gtk.rc_add_default_file(file) 
gtk.rc_reparse_all() 

Et le gtkrc personnalisé peut ressembler à ceci:

gtk_color_scheme = "fg_color:#ECE9E9;bg_color:#ECE9E9;base_color:#FFFFFF;text_color:#000000;selected_bg_color:#008DD7;selected_fg_color:#FFFFFF;tooltip_bg_color:#000000;tooltip_fg_color:#F5F5B5" 
style "theme-fixes" { 

    fg[NORMAL]  = @fg_color 
    fg[PRELIGHT]  = @fg_color 
    fg[SELECTED]  = @selected_fg_color 
    fg[ACTIVE]  = @fg_color 
    fg[INSENSITIVE] = darker (@bg_color) 

    bg[NORMAL]  = @bg_color 
    bg[PRELIGHT]  = shade (1.02, @bg_color) 
    bg[SELECTED]  = @selected_bg_color 
    bg[INSENSITIVE] = @bg_color 
    bg[ACTIVE]  = shade (0.9, @bg_color) 

    base[NORMAL]  = @base_color 
    base[PRELIGHT] = shade (0.95, @bg_color) 
    base[ACTIVE]  = shade (0.9, @selected_bg_color) 
    base[SELECTED] = @selected_bg_color 
    base[INSENSITIVE] = @bg_color 

    text[NORMAL]  = @text_color 
    text[PRELIGHT] = @text_color 
    text[ACTIVE]  = @selected_fg_color 
    text[SELECTED] = @selected_fg_color 
    text[INSENSITIVE] = darker (@bg_color) 

    GtkTreeView::odd_row_color = shade (0.929458256, @base_color) 
    GtkTreeView::even_row_color = @base_color 
    GtkTreeView::horizontal-separator = 12 

     font_name = "Helvetica World 7" 
} 
class "*" style "theme-fixes" 
+0

J'ai essayé de le faire et j'ai changé la couleur du texte en "FF0000" pour voir si cela avait un effet, mais ce n'est pas le cas. dois-je définir le thème d'une manière ou d'une autre à partir de mon application? – Claudiu

+0

note que faire set_default_files a causé l'apparence de changer – Claudiu

+0

nm, je ne donnais pas de chemins absolus. il semble fonctionner (bien que ce schéma particulier semble moche maintenant ... et il semble que la couleur du texte n'est pas noir .. mais mal le comprendre) – Claudiu

0

Après avoir écrit une application GTK évolutive 100%, ce que je faisais moi-même était de limiter à gdk_draw_line et gdk_draw_rectangle, qui étaient faciles à alors échelle moi même. Le texte a été "fait" via gdk_draw_line. (pour certaines valeurs basses de "fait.") Voir: http://wordwarvi.sourceforge.net

Pas que cela vous aide, je devine.

+0

nah J'ai une application graphique, pas un jeu. Quelque chose comme SDL ne serait pas mieux pour un jeu, d'ailleurs? (ou peut-être que j'ai mal compris ce que votre programme est exactement) – Claudiu

+1

Pour ce jeu probablement pas mieux, juste différent. Je connaissais gtk, mais pas SDL, et tout ce dont j'avais besoin pour obtenir le jeu était la capacité de tracer des lignes. Je serais surpris si l'implémentation du dessin au trait de SDL était meilleure que celle de gtk - ils font probablement tous les deux juste des appels xlib - et je m'excuse. Je ne voulais pas que le x-windows spécifique au matériel contourne les trucs que SDL pourrait fournir (IDK si c'est le cas ou pas) Je voulais que ça fonctionne avec X comme un programme "normal", et je savais que gtk fais-moi ça.L'interface de Blender est évolutive et adopte une approche similaire - interface utilisateur personnalisée. – smcameron

Questions connexes