Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wxPython Mac OS X全屏解决错误_Python_Objective C_Macos_Wxpython_Pyobjc - Fatal编程技术网

wxPython Mac OS X全屏解决错误

wxPython Mac OS X全屏解决错误,python,objective-c,macos,wxpython,pyobjc,Python,Objective C,Macos,Wxpython,Pyobjc,我试图使用这个问题答案中的代码获得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 "te

我试图使用这个问题答案中的代码获得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'
回溯(最近一次呼叫最后一次):
文件“test_mac_fullscreen.py”,第36行,在
frame=frame()
文件“test_mac_fullscreen.py”,第29行,在初始化中__
可设置全屏(自)
文件“test_mac_fullscreen.py”,第16行,setfullscreenable
window=frameobj.window()
AttributeError:“NSHIObject”对象没有属性“window”
我的代码(刚刚从上面的链接复制并粘贴到一个文件中)

#来自https://stackoverflow.com/questions/12328143/getting-pyobjc-object-from-integer-id
导入ctypes,objc
_objc=ctypes.PyDLL(objc.\u objc.\uuuuuu文件)
#PyObject*PyObjCObject_新建(id objc_对象,int标志,int保留)
_objc.PyObjCObject_New.restype=ctypes.py_对象
_objc.PyObjCObject_New.argtypes=[ctypes.c_void_p,ctypes.c_int,ctypes.c_int]
def objc_对象(id):
return _objc.pyobjc object_New(id,0,1)
def SETFULLSCREENABLE(帧):
frameobj=objc_对象(frame.GetHandle())

NSWindowCollectionBehaviorFullScreenPrimary=1虽然这已经很晚了,但最近看到它时,它突然点击了


如果您在错误中注意到它声明了一个类NSHIObject(嗨,我猜它代表人机界面),那么这与wxPython使用的后端、古旧的Carbon(在本例中)或更新的Cocoa有关。在早期版本中,只有碳元素可用,但在2.9.5(IIRC)版本中,可可元素可用(我相信,在使用可可元素或碳元素时,它会有意义地移动到3.0)。只需使用cocoa版本重新安装,它就可以工作。

尝试在链接问题中对该特定答案进行评论,您可能会从引用代码的作者那里得到很好的响应。该代码对我来说没有任何错误。嗯,奇怪的是,您在运行Mountain Lion吗?
# 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"