wxPython如何在Ubuntu上使用已安装的字体

2024-04-26 19:11:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我找到了一些关于如何将字体安装到Windows系统的参考资料,但我在Ubuntu上找不到也弄不清楚该怎么做。我使用的是ubuntu14.04和wxpython3.0,字体安装在usr/share/fonts/truetype中。你知道吗

我不担心平台独立性,这是一个严格的个人项目,只会在我的Ubuntu机器上使用。你知道吗


Tags: 项目机器shareubuntuwindowsusr系统字体
1条回答
网友
1楼 · 发布于 2024-04-26 19:11:31

将我的评论转换为答案-我建议使用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()

如需进一步参考,请参阅以下内容:

相关问题 更多 >