2015-12-19 40 views
1

我想爲Mac OS X(El Capitan)構建wxPython應用程序並使用視網膜顯示器工作MBP。wxPython(鳳凰)視網膜狀態圖標

我剛剛複製Google Drive應用狀態圖標 - 16x16和32x32(2x),並得到它模糊。

我也試過this ticket的代碼,它沒有幫助。

我的代碼如下所示:

icon = wx.Icon('[email protected]', wx.BITMAP_TYPE_ANY) 

而且結果(最左邊的圖標是我的):

enter image description here

wxPython的版本:3.0.3.dev1836 + f764b32 OSX可可(鳳凰)

PS。我知道Google Drive也建立在wxPython之上。但狀態欄中有良好的視網膜圖像。他們怎麼做?

+0

嗯結束。它看起來像wx檢測我的筆記本電腦爲非視網膜(wxOSXGetMainScreenContentScaleFactor爲1.0)出於某種原因。 – ssbb

回答

0

的一種方法是設定圖符之前檢查規模:

import sys; print sys.version 
    import wx; print wx.version() 
    if 'phoenix' not in wx.PlatformInfo: exit() 


    class CreateTestFrame(wx.Frame): 
     def __init__(self): 
      return wx.Frame.__init__(self, None, -1, "test frame") 


    wxSandbox = wx.App() 

    testFrame = CreateTestFrame() 
    print "Scale factor: ", testFrame.GetContentScaleFactor() 

    if testFrame.GetContentScaleFactor() < 2.0: 
     print "Not 'Retina' scaling" 
     icon = wx.Icon('./icons/mac-normal.png', wx.BITMAP_TYPE_ANY) 
     print "pixel height", icon.GetHeight() 
    else: 
     print "'Retina' scaling" 
     icon = wx.Icon('./icons/[email protected]', wx.BITMAP_TYPE_ANY) 
     print "pixel height", icon.GetHeight() 
    testFrame.SetIcon(icon) 
    testFrame.Show() 
    wxSandbox.MainLoop() 
    exit() 

我的顯示器上的刻度示出了作爲「2.0」和它正確地選擇32×32的圖標。

2.7.11(默認情況下,2015年12月5日,14時44分53秒)
[4.2.1 GCC兼容蘋果LLVM 7.0.0(鐺-700.1.76)]
「3.0.3( thorr18)-f764b32 OSX可可(鳳)」
比例係數:2.0
'視網膜' 縮放
像素高度32個

過程,退出代碼0

+0

看不到我自己的評論(在視網膜上檢測到的比例爲1.0)。 – ssbb

+0

當它檢測爲1.0,並選擇16x16圖標後,你會得到模糊的結果? – thorr18

+0

這兩個16x16/32x32圖標看起來很模糊(如果條件不合適,嘗試)。 – ssbb