Ich versuche, die PyObjC Bindungen für ImageCaptureCore zu testen, und ich bin nicht in der Lage meiner Delegierten Rückrufe zu bekommen gar Feuer:Mit ImageCaptureCore mit PyObjC
"""ImageCaptureCore test app.""" from __future__ import ( absolute_import, division, print_function, ) import time import objc from AppKit import NSObject from ImageCaptureCore import ( ICCameraDevice, ICDeviceBrowser, ICDeviceLocationTypeMaskLocal, ICDeviceTypeMaskCamera, ) class ICDelegate(NSObject): """Implements ICDeviceBrowserDelegate.""" def __new__(cls): """Create a new `ICDelegate`.""" return ICDelegate.alloc().init() def init(self): self = objc.super(ICDelegate, self).init() if self is None: return None self.devicesFetched = False print("Delegate initialized.") return self # ICDeviceBrowserDelegate callbacks def deviceBrowserDidEnumerateLocalDevices_(self, browser): print("Done fetching devices.") self.devicesFetched = True def deviceBrowser_didAddDevice_moreComing_(self, browser, device, moreComing): print("Device added.") def deviceBrowser_didRemoveDevice_moreGoing_(self, browser, device, moreGoing): print("Device removed.") delegate = ICDelegate() browser = ICDeviceBrowser.alloc().init() browser.setDelegate_(delegate) browser.setBrowsedDeviceTypeMask_(ICDeviceTypeMaskCamera | ICDeviceLocationTypeMaskLocal) browser.start() print("Fetching cameras...") while not delegate.devicesFetched: time.sleep(1) print("Still fetching cameras...") # We never get past this!
Von meinem Verständnis des API, Ich sollte die didEnumerateLocalDevices
Rückruf erhalten, sobald die ICDeviceBrowser
hat eine Liste von Geräten (auch wenn keine Geräte eingesteckt sind) fertig, und ich sollte eine didAddDevice
für jedes angeschlossene Gerät erhalten. Ich erhalte stattdessen nichts (unabhängig davon, ob ich stecke in einem Gerät oder nicht, entweder vor oder nach dem ich mein Skript zu starten, ich habe auch ein iPhone, eine normale USB-Kamera versucht):
Delegate initialized. Fetching cameras... Still fetching cameras... Still fetching cameras... Still fetching cameras... Still fetching cameras...
Gibt es ein andere Art von Setup, die passieren müssen, um ICDeviceBrowser
zu beginnen, um zu arbeiten? Ich habe mir die nativen OBJC-Beispiele angeschaut und es sieht aussieht wie ich über die gleiche Sache mache, aber ich konnte keine Beispiele für die Pyobjc-Bindung finden, denen ich folgen kann.