我很困惑,我將如何實現窗口的拖放功能,然後讓該URL出現在文本框中。蟒蛇拖放初始化問題[解決]
我已經更新我在哪裏停留在
class controller(NSWindow):
#File to encode or decode
form_file = IBOutlet()
mainWindow = IBOutlet()
#drag and drop ability
def awakeFromNib(self):
self.registerForDraggedTypes_([NSFilenamesPboardType, None])
print 'registerd drag type'
def draggingEntered_(self, sender):
print 'dragging entered doctor who'
pboard = sender.draggingPasteboard()
types = pboard.types()
opType = NSDragOperationNone
if NSFilenamesPboardType in types:
opType = NSDragOperationCopy
return opType
def performDragOperation_(self,sender):
print 'preform drag operation'
pboard = sender.draggingPasteboard()
successful = False
if NSFilenamesPboardType in pboard.types():
print 'my actions finally working'
fileAStr = pboard.propertyListForType_(NSFilenamesPboardType)[0]
print type(fileAStr.encode('utf-8'))
successful = True
print self.form_file
return successful
我可以刪除文件,但我無法從performDragOperation
函數內refrence的form_file
出口。正如你可以看到我試圖打印它,但它返回一個NoneType
錯誤。
(reason '<type 'exceptions.TypeError'>: 'NoneType' object is not callable') was raised during a dragging session
你實現了'draggingEntered:'等方法嗎?如果沒有,你會得到默認值,它總是返回'NSDragOperationNone',這意味着什麼都不能被丟棄。 (您已閱讀[拖放介紹](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DragandDrop/DragandDrop.html#//apple_ref/doc/uid/10000069i)該文件,對吧?) – abarnert
我做到了,我發佈了我從教程中獲得的代碼,是的,我讀過文檔。我想知道是否需要@IBAction或其他東西。 – lostAstronaut
此外,您可能需要運行Julian Pellico的Pasteboard Inspector,Xcode doc樣本的Pasteboard Peeker,Heinrich Giesen的Pasteboardtest,Philippe Mougin的Drop Inspector或類似的工具(我目前沒有任何鏈接... )看看究竟是什麼被丟棄,並確保實際上有一個'NSURLPboardType'。 – abarnert