8
PythonスクリプトからMountain Lionに通知を送信しようとしていて、通知のクリックに反応しています。通知を送信すると、今すぐ見つかるはずです。しかし、私はライオンにクリックで私のスクリプトを呼び戻すことができませんでした。PyObjCを使用したMountain Lionの通知センターの使用
ここは私がしていることです。私はNotificationクラスを実装しました。そのクラスのインスタンスの唯一の目的は、notify()
を呼び出して通知を提供することです。私は同じメソッドで、オブジェクトをアプリケーションの代理人に設定しました。
import Foundation
import objc
import AppKit
class MountainLionNotification(Foundation.NSObject, Notification):
def notify(self, title, subtitle, text, url):
NSUserNotification = objc.lookUpClass('NSUserNotification')
NSUserNotificationCenter = objc.lookUpClass('NSUserNotificationCenter')
notification = NSUserNotification.alloc().init()
notification.setTitle_(str(title))
notification.setSubtitle_(str(subtitle))
notification.setInformativeText_(str(text))
notification.setSoundName_("NSUserNotificationDefaultSoundName")
notification.setUserInfo_({"action":"open_url", "value":url})
AppKit.NSApplication.sharedApplication().setDelegate_(self)
NSUserNotificationCenter.defaultUserNotificationCenter().scheduleNotification_(notification)
def applicationDidFinishLaunching_(self, sender):
userInfo = sender.userInfo()
if userInfo["action"] == "open_url":
import subprocess
subprocess.Popen(['open', userInfo["value"]])
は、今私はapplicationDidFinishLaunching_()
通知をクリックすると呼ばれるように期待しました。残念ながらそれは決して起こりません。私は間違って何をしていますか?
@ objc.signatureを( "V @^@")'デリゲートメソッドに、成功しませんでした。 – koloman
私は 'MountainLionNotification'オブジェクトをデフォルトの通知センターのデリゲートに設定し、プロトコル' userNotificationCenter_didActivateNotification() 'を実装しようとしました。スティルは成功しない! – koloman
ちょっと、イベントループを開始せずにPythonスクリプト/インタプリタから表示するように通知を受け取ることができましたか?上記のコードを使用して通知を受け取ることさえできないようです。 – GP89