Windows 7,wxpython,未知的字体粗细

时间:2012-03-25 00:18:44

标签: windows-7 encoding fonts wxpython

我对此很新:

我的应用程序在Linux中运行良好,我开发了它。我试图将它移植到win7然后再将其作为exe(学校心理学家想在她的计算机上使用它)。该应用程序的一个功能是更改字体大小以响应事件(在这种情况下,用户按下按钮)。

以下是代码:

if countfinal == 1:
        on_start = time.time()
        ot.append(on_start) 
        self.welcome.SetLabel("Timing On Task Event") 
        self.label_directions.SetLabel("Timing On Task Event")
        self.SetBackgroundColour(wx.GREEN)  
        on.append(1)
        font = wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.DEFAULT, wx.FONTENCODING_SYSTEM) 
        self.label_directions.SetFont(font)  
        self.save_quit.Enable(False)

Windows 7引发了此错误:

Traceback (most recent call last):
File "time.py", line 131, in time_event
font = wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.DEFAULT, wx.FONTENCODING_SYSTEM)
File "C:\Python27\lib\site-packages\wx-2.8-msw-unicode\wx\_gdi.py", line 2081,           in       __init__
_gdi_.Font_swiginit(self,_gdi_.new_Font(*args, **kwargs))
wx._core.PyAssertionError: C++ assertion "wxAssertFailure" failed at ..\..\src     \msw\font.cpp(560) in wxNativeFontInfo::Se
tWeight(): unknown font weight

我一直在读它与Windows没有使用UTF-8有关。这很好,但它对我没有帮助。

如何告诉wx使用Windows 7识别的字体编码?有人可以这么善良地为我提供一个代码示例吗?文档对我来说有点过于神秘;我仍然处在那个挣扎的新手阶段。

2 个答案:

答案 0 :(得分:0)

我在blog上写了一篇关于字体的文章。我只是尝试了代码并在“尺寸”列表中添加了18磅的字体,它工作正常。也许你可以在你的计算机上试一试,看看它是否也在那里工作?如果是,那么你会想看看你的代码与我的不同之处。

答案 1 :(得分:0)

好的,我弄清楚我的错误在哪一方面。我做错了两件事:

  1. 我误读了错误代码。错误代码引用"权重"而不是"尺寸。"整个utf-8真的是一个无处可见的兔子洞。

  2. 我把东西放错了。 Mike Driscoll's tutorial通过此示例清楚地表明了这一点:

    font = wx.Font(size,families [family],styles [style],                                重量[重量])

  3. wx对属性的顺序很挑剔。它的大小,家庭,风格,重量。我把它们弄坏了。我想我也使用了错误的wx属性。似乎有些教程将包含wx.DEFAULT而不是wx.FONTFAMILY_DEFAULT。这对一个新的程序员来说很可疑。只写出标签的第一部分真的很难吗?特别是在教程中?

    以下是有效的代码:

    if countfinal == 1
    
            size = 18 
            font = wx.Font(size, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) 
            self.label_directions.SetFont(font)  
    

    特别感谢Mike Driscoll发布答案并编写该教程!

    干杯!