2009-08-12 155 views
3

有一種簡單的方法來改變在GTK文本元素的字體大小?現在我能做的最好的是在標籤上做set_markup,有一些愚蠢的,如:如何更改GTK中的字體大小?

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

這1)要求我設置字體,2)似乎是一個很大的開銷(不必解析標記)和3)會讓人討厭更改按鈕等的字體大小。有沒有更好的辦法?

+0

今天我很驚訝地發現,font_desc可與單獨的字體大小。這對我來說並不明顯。 – 2018-03-03 12:57:50

回答

7

如果你想在你的應用程序(S)字體的整體改變,我ð離開這個工作的gtkrc(然後變成一個谷歌的問題,和「的gtkrc字體」查詢給我們帶來this ubuntu forums link它具有gtkrc文件的下面的代碼段):

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

(用您/用戶需要的字體替換字體)

然後,用戶將獲得一致的體驗,並且能夠輕鬆更改設置,而無需讓他們在代碼中戳字,也無需處理維護您的個人配置相關代碼的開銷。我知道如果你有更精確的widget_class定義,你可以使這個設置更具體。

因人而異爲不同的平臺,但據我所知這個文件是始終存在的,如果正在使用GTK某個位置,並允許用戶負責的表現的細節。

+0

是否可以爲我的應用程序使用自定義gtkrc文件?如果是這樣,我該怎麼做? – Claudiu 2009-08-13 01:16:35

+1

嘗試從這裏的想法:http://www.daa.com.au/pipermail/pygtk/2008-December/016359.html – 2009-08-13 06:07:07

+0

@AndrewY,謝謝你的答案。今天這幫助了我。 – ECC 2014-08-22 11:19:46

3

在C語言中,你可以這樣做:

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

在PyGTK的,我相信這是這樣的:

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

在C這會創建一個內存泄漏,由於攀高字體描述需要與'pango_font_description_free被釋放()'使用後(這不是顯而易見的pango_font_description_from_string'的文檔()'本身)。除此之外,這是一個可能的解決方案。 – 2018-03-03 11:40:51