2014-09-05 49 views
0

我想使用PyObjC讀取OSX剪貼板。使用PyObjC無法訪問NSPasteboard

裏面蟒蛇殼

import AppKit 
>>> clip = AppKit.NSPasteboard.generalPasteboard() 
>>> dir(clip) 
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] 

許多紙板屬性丟失。所以clip.stringForType_(AppKit.NSStringPboardType)導致AttributeError。

+0

其他對象是否具有適當的屬性?你的PyObjC和OS X版本是什麼? – 2014-09-05 18:43:48

+0

是的,'dir(AppKit.NSPasteboard)'顯示了很多屬性。 OSX版本 - 10.9.4。我如何檢查PyObjC版本? – 2014-09-05 18:46:12

回答

0

下面是一些python,它將從剪貼板以純文本形式讀取。如果要包含其他類型,則將它們添加到數組myFavouriteTypes(並使用dataForType)。

from AppKit import NSPasteboard, NSStringPboardType 

myFavoriteTypes = [NSStringPboardType] 
pb = NSPasteboard.generalPasteboard() 
best_type = pb.availableTypeFromArray_(myFavoriteTypes) 
if best_type: 
    clipString = pb.stringForType_(best_type) 
    if clipString: 
     print (clipString) 
else: 
    print ("No clipboard image data was retrieved.") 
    print ("These types were available:") 
    print (pb.types())