2015-02-07 4 views
0

저는 Vala/Gtk 초보자이고 Gtk.Label의 글꼴 크기를 변경하려고 시도하고 있지만 좋은 방법을 찾을 수 없습니다.Gtk.Label의 글꼴 크기를 vala로 어떻게 변경할 수 있습니까?

는 나는이 같은 마크 업을 사용할 수 있음을 알 수 :

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) –

+0

다른 질문은 GTK 2에만 해당됩니다. (나는 그것을 태그로 붙였다.) CSS는이 질문에 대한 정답이다. – ptomato

답변

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

5

Thanks lethalman and nemequ.

저는 누군가에게 도움이 될 것이라고 생각합니다. 여기에 Vala와 CSS를 사용하는 방법에 대한 약간의 예가 있습니다.

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; 
} 

NB : 당신이 add_provider_for_screen 대신 add_provider를 사용하는 경우. 사용자 정의하려는 모든 위젯에 대해 add_provider를 사용해야합니다.

관련 문제