将wxPython小部件字体设置为外部字体文件



我正在为一家试图用特定字体打造自己品牌的公司开发一个应用程序。他们已经给了我其他产品使用的字体的所有.otf文件。是否可以在按钮和静态文本等小部件上设置字体以使用这些外部文件?如果是这样,它会是独立于平台的吗?

感谢

还没有,但可能很快就会实现。我最近在wxWidgetsTrac上看到了一个补丁和关于它的讨论。

我自己也对此感兴趣,并拼凑了一些东西来尝试一下。我看着http://wiki.wxpython.org/UsingFonts并尝试了wx。FontList.FindOrCreateFont方法尝试将字体加载到wxpython中。这失败了,因为AddFontResourceA调用返回了0,这是一个失败代码;它没有提供进一步的信息。感谢微软!!

如果将字体安装到系统(假设是Windows),则字体选择会起作用。

我在wxpython 2.8、Windows 7 64位和Proggy字体上尝试过这个

from ctypes import *
import os
gdi32= WinDLL("gdi32.dll")
font_path = os.path.abspath("ProggySquare.tff")
print font_path
print gdi32.AddFontResourceA(font_path)
import wx
class DrawPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.Bind(wx.EVT_PAINT, self.OnPaint)
    def OnPaint(self, event=None):
        face = "ProggySquareTT"
        prog_font = wx.TheFontList.FindOrCreateFont(28, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, face)
        def_font = wx.Font(12, wx.MODERN, wx.NORMAL, wx.NORMAL)
        dc = wx.PaintDC(self)
        dc.Clear()
        dc.SetFont(prog_font)
        dc.DrawText("Modern font Family", 50, 50)
app = wx.App(0)
frame = wx.Frame(None, title="Font Family")
DrawPanel(frame)
frame.Show()
#data = wx.FontData()
#data.EnableEffects(True)      
#dlg = wx.FontDialog(None, data)
#if dlg.ShowModal() == wx.ID_OK:          
#    data = dlg.GetFontData()
#    font = data.GetChosenFont() 
#e = wx.FontEnumerator()
#e.EnumerateFacenames()
#elist= e.GetFacenames()
#elist.sort()
#print elist
app.MainLoop()

最新更新