2015-02-07 33 views
0

我是Vala/Gtk新手,我正在嘗試更改Gtk.Label的字體大小,但我找不到一個好的方法來完成它。如何在vala中更改Gtk.Label的字體大小?

我發現我可以用類似這樣的標記:

var welcome_message = new Gtk.Label ("<span size='17000'>Hello</span>"); 
    welcome_message.set_use_markup (true); 

但它似乎有點hackish的。 什麼是正確的做法?

+0

可能重複[如何更改GTK字體大小?](http://stackoverflow.com/questions/1269326/how-can-i-change-the-font-size-in-gtk) – 2015-02-07 12:45:19

+0

另一個問題僅涉及GTK 2。 (我把它標記爲這樣。)CSS是這個問題的正確答案。 – ptomato 2015-02-11 08:05:11

回答

1

你可以嘗試用CSS,我認爲這是最好的方式。給你的標籤一個類,然後加載一個CSS。如果您要更改標籤的字體大小,我敢打賭,您還將定製其他內容,以便CSS可能對您有用。

+0

我同意,CSS是一個好方法。你也可以使用pango屬性,但是它並不比標記更加惡意:'Pango.AttrList attrs = new Pango.AttrList(); attrs.insert(Pango.attr_scale_new(Pango.Scale.LARGE)); label.attributes = attrs;' – nemequ 2015-02-09 20:44:17

5

謝謝lethalman和nemequ。

我認爲這可能有助於某人,所以這裏是一個如何使用CSS與Vala的小例子。

using Gtk; 

public class StyleApp1 : Gtk.Window 
{ 
    public StyleApp1() 
    { 

     this.title = "Style app example"; 
     this.set_border_width (10); 
     this.set_position (Gtk.WindowPosition.CENTER); 

     this.set_default_size (350, 200); 
     this.destroy.connect (Gtk.main_quit); 

     var screen = this.get_screen(); 
     var css_provider = new Gtk.CssProvider(); 

     string path = "styleapp1.css"; 

     // test if the css file exist 
     if (FileUtils.test (path, FileTest.EXISTS)) 
     { 
      try { 
       css_provider.load_from_path(path); 
       Gtk.StyleContext.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER); 
      } catch (Error e) { 
       error ("Cannot load CSS stylesheet: %s", e.message); 
      } 
     } 

     var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 10); 
     this.add (box); 

     var label = new Gtk.Label ("Thank you"); 
     box.add (label); 

     var label2 = new Gtk.Label ("Stackoverflow"); 
     label2.get_style_context().add_class("my_class"); 
     box.add (label2); 
    } 
} 

static int main(string[] args) { 
    Gtk.init(ref args); 

    StyleApp1 win = new StyleApp1(); 
    win.show_all(); 

    Gtk.main(); 
    return 0; 
} 

和styleapp1.css文件:

GtkWindow { 
    font-size: 17px; 
} 

.my_class { 
    color: pink; 
} 

注:如果您使用add_provider代替add_provider_for_screen的。您必須爲您要自定義的每個小部件使用add_provider。