[英]wxPython Mac OS X Fullscreen work around error
我正在嘗試使用此stackoverflow問題wxPython MacOS X Lion全屏模式的答案中的代碼獲得對wxPython應用程序的全屏支持
我的錯誤
Traceback (most recent call last):
File "test_mac_fullscreen.py", line 36, in <module>
frame = Frame()
File "test_mac_fullscreen.py", line 29, in __init__
SetFullScreenCapable(self)
File "test_mac_fullscreen.py", line 16, in SetFullScreenCapable
window = frameobj.window()
AttributeError: 'NSHIObject' object has no attribute 'window'
我的代碼(只需從上面的鏈接復制並粘貼到一個文件中)
# from https://stackoverflow.com/questions/12328143/getting-pyobjc-object-from-integer-id
import ctypes, objc
_objc = ctypes.PyDLL(objc._objc.__file__)
# PyObject *PyObjCObject_New(id objc_object, int flags, int retain)
_objc.PyObjCObject_New.restype = ctypes.py_object
_objc.PyObjCObject_New.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]
def objc_object(id):
return _objc.PyObjCObject_New(id, 0, 1)
def SetFullScreenCapable(frame):
frameobj = objc_object(frame.GetHandle())
NSWindowCollectionBehaviorFullScreenPrimary = 1<<7
window = frameobj.window()
newBehavior = window.collectionBehavior() | NSWindowCollectionBehaviorFullScreenPrimary
window.setCollectionBehavior_(newBehavior)
import wxversion
wxversion.select('2-osx_cocoa') # require Cocoa version of wxWidgets
import wx
class Frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.Bind(wx.EVT_CLOSE, self.OnClose)
wx.Button(self, label="Hello!") # test button to demonstrate full-screen resizing
SetFullScreenCapable(self)
def OnClose(self, event):
print "Closing"
exit()
if __name__ == "__main__":
app = wx.App(False)
frame = Frame()
frame.Show()
app.MainLoop()
print "running app loop"
雖然這已經很晚了,但是最近看到它卻突然點擊了。
如果您在錯誤中注意到它指出了一個NSHIObject類(嗨,我想代表人機接口),則與wxPython使用的后端,過時的Carbon(在這種情況下)或更新的Cocoa有關。 在早期版本中,只有Carbon可用,但是帶有2.9.5(IIRC)的Cocoa可用(我相信使用Cocoa或Carbon可以將其提高到3.0)。 只需重新安裝可可版本即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.