2015-04-23 47 views
0

我發現瞭如何將字體安裝到Windows系統的參考資料,但是我找不到或找出如何在Ubuntu上這樣做。我使用的是Ubuntu 14.04,wxpython 3.0,並且我在usr/share/fonts/truetype中安裝了字體。wxPython - 如何在Ubuntu上使用已安裝的字體

我並不擔心平臺獨立性,這是一個嚴格的個人項目,只會在我的Ubuntu機器上使用。

+0

你究竟是什麼想做?據我所知,FontEnumerator在Ubuntu上工作,讓我們選擇並設置系統上安裝的任何字體。您可以在wxPython演示中查看該演示。 –

+0

工作,謝謝 – linus72982

回答

0

將我的評論轉換爲答案 - 我推薦使用FontEnumerator小部件。它允許您選擇和設置系統上安裝的任何字體。 wxPython演示中有一個例子。

下面是一個使用演示爲基礎演示:

import wx 

######################################################################## 
class TestPanel(wx.Panel): 

    #---------------------------------------------------------------------- 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent, -1) 

     e = wx.FontEnumerator() 
     e.EnumerateFacenames() 
     elist= e.GetFacenames() 

     elist.sort() 

     s1 = wx.StaticText(self, -1, "Face names:") 

     self.lb1 = wx.ListBox(self, -1, wx.DefaultPosition, (200, 250), 
           elist, wx.LB_SINGLE) 

     self.Bind(wx.EVT_LISTBOX, self.OnSelect, id=self.lb1.GetId()) 

     self.txt = wx.StaticText(self, -1, "Sample text...", (285, 50)) 

     row = wx.BoxSizer(wx.HORIZONTAL) 
     row.Add(s1, 0, wx.ALL, 5) 
     row.Add(self.lb1, 0, wx.ALL, 5) 
     row.Add(self.txt, 0, wx.ALL|wx.ADJUST_MINSIZE, 5) 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     sizer.Add(row, 0, wx.ALL, 30) 
     self.SetSizer(sizer) 
     self.Layout() 

     self.lb1.SetSelection(0) 
     self.OnSelect(None) 
     wx.FutureCall(300, self.SetTextSize) 

    #---------------------------------------------------------------------- 
    def SetTextSize(self): 
     self.txt.SetSize(self.txt.GetBestSize()) 

    #---------------------------------------------------------------------- 
    def OnSelect(self, evt): 
     face = self.lb1.GetStringSelection() 
     font = wx.Font(28, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, face) 
     self.txt.SetLabel(face) 
     self.txt.SetFont(font) 
     if wx.Platform == "__WXMAC__": self.Refresh() 

######################################################################## 
class MyForm(wx.Frame): 

    #---------------------------------------------------------------------- 
    def __init__(self): 
     wx.Frame.__init__(self, None, 
          title="wx.FontEnumerator Tutorial", 
          size=(800,600)) 
     panel = TestPanel(self) 


#---------------------------------------------------------------------- 
# Run the program 
if __name__ == "__main__": 
    app = wx.App(False) 
    frame = MyForm() 
    frame.Show() 
    app.MainLoop() 

有關進一步的參考,見下圖: