2012-03-25 40 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