2012-03-25 41 views
1

我是一种新的在这:Windows 7中,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识别的字体编码?有人可以提供这样的代码示例吗?这个文档对我来说有点太神秘了。我仍然处于这个挣扎的新手阶段。

回答

0

好的,我想清楚我的错误在哪里。我做了两件错事:

  1. 我误读了错误代码。错误代码称为“重量”,而不是“大小”。整个utf-8的事情真的是一个无处可逃的兔子洞。

  2. 我把东西放错了顺序。 Mike Driscoll's tutorial使得它与本实施例中明确:

    字体= wx.Font(大小,家庭[家庭],样式[式],权重 [重量])

即宽x是挑剔的顺序的属性。它大小,家庭,风格,重量。我把它们弄乱了。我想我也在使用错误的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) 

特别感谢迈克·德里斯科尔张贴的答案,用于编写教程!

干杯!

+0

我猜wx.DEFAULT和wx.FONTFAMILY_DEFAULT映射到相同的值,可以互换使用。 – 2012-03-27 13:02:22

+0

@MikeDriscoll,我认为你对他们被映射到相同的价值是正确的。对我来说,作为一名学习者很困难的是,接近同一职能有两种不同的惯例,除了简洁之外,对任何一种方法都没有明显/显着的优点或缺点。我喜欢FONTFAMILY_DEFAULT约定,因为它使得人类读者更清楚代码应该做什么。 – Josef 2012-03-31 21:16:08

+0

我同意显式通常胜过隐式,特别是在学习新东西时。 – 2012-04-17 13:20:22

0

我写了一篇关于我的blog上的字体的文章。我只是试了一下代码,并在“大小”列表中添加了一个18磅字体,并且它工作正常。也许你可以在电脑上试试它,看看它是否也可以在那里使用?如果是这样,那么你会想看看你的代码与我的不同。

+0

谢谢你的教程。我没有在我的代码中使用字典作为字体,但我从你的教程中弄清楚我做错了什么。我将在下面的答案中包含它。 – Josef 2012-03-27 00:16:07