Pra*_*ani 5 pyobjc objective-c nsstatusitem nspopover
我正在使用Pyobjc来创建NSStatusItem.单击它时,我显示的是NSPopOver.这工作正常.但是,我的要求是在应用程序启动时立即显示弹出框,而不会由用户执行任何操作.直接在finishLaunching中调用回调不起作用.有没有办法实现这个目标?即使可以模拟NSStatusView上的点击,它也会很好.
class TestApp(NSApplication):
def finishLaunching(self):
# Make statusbar item
statusbar = NSStatusBar.systemStatusBar()
self.statusitem = statusbar.statusItemWithLength_(NSVariableStatusItemLength)
self.statusitem.setTarget_(self)
self.statusitem.setAction_('statusItemClicked:')
self.icon = NSImage.alloc().initByReferencingFile_('app-icon.png')
self.icon.setScalesWhenResized_(True)
self.icon.setSize_((20, 20))
self.statusitem.setImage_(self.icon)
self.statusitem.setHighlightMode_(1)
# self.statusItemClicked_(None)
def statusItemClicked_(self, notification):
self.viewController = SimpleXibDemoController.alloc().initWithWindowNibName_("Login")
# Show the window
self.viewController.showWindow_(self.viewController)
rect = self.statusitem.valueForKey_('button').frame()
self.viewController.popover.showRelativeToRect_ofView_preferredEdge_(rect, self.statusitem.valueForKey_('button'), NSMaxYEdge)
Run Code Online (Sandbox Code Playgroud)
您必须等到视图出现呈现NSPopover. viewDidAppear在您的子类中重写NSViewController并将其呈现在那里。(或者loadView如果您的最低部署目标低于 OS X Yosemite,则覆盖。)