【发布时间】:2021-04-29 22:25:05
【问题描述】:
我正在尝试通过在 Python 中调用 .addSubvew_(image) 方法将图像添加到 NSPanel,但我不断收到 [NSImage window]: unrecognized selector sent to instance 0x7fbb246a9e10。我不确定问题是图像的初始化问题,还是我错误地添加了子视图。但似乎初始化工作得很好,因为它在单独运行时不会给出任何错误。
完整代码如下:
from Cocoa import NSObject, NSApplication, NSApp, NSWindow, NSPanel, NSColor, NSImage, NSSound
from PyObjCTools import AppHelper
def main():
NSApplication.sharedApplication()
# we must keep a reference to the delegate object ourselves,
# NSApp.setDelegate_() doesn't retain it. A local variable is
# enough here.
delegate = NSPanel.alloc().init()
NSApp().setDelegate_(delegate)
win = NSPanel.alloc()
frame = ((875.0, 140.0), (180.0, 200.0))
win.initWithContentRect_styleMask_backing_defer_(frame, 9395, 0, 5)
win.setLevel_(0) # floating window
image1 = NSImage.alloc()
image1.initWithContentsOfFile_('/Users/yassine/Teams.png')
win.contentView().addSubview_(image1)
win.display()
win.orderFrontRegardless() # but this one does
AppHelper.runEventLoop()
if __name__ == "__main__":
main()
【问题讨论】:
-
NSImage是图像,而不是视图。请改用NSImageView并将您的图片添加到其中。 -
@koen 完美,但 NSImageView 在初始化期间似乎有点笨拙。
image = NSImageView.alloc() image.initByImage_(image1)此代码没有任何变化可以正确初始化它。我总是遇到同样的错误:AttributeError: 'NSImageView' object has no attribute 'initByImage_'
标签: objective-c cocoa nswindow nsimage pyobjc