NSUserNotificationCenter.defaultUserNotificationCenter () Rückgabe von None mit PyInstaller

Ich versuche, Benachrichtigung an Benachrichtigungszentrum (Mac OSX) Ich benutze PyObjC Bindungen, um Kakao-Api aus unserer Python-Anwendung verwenden.

Ich benutze folgendes Code-Snippet:

import Foundation¬ import objc¬ NSUserNotification = objc.lookUpClass('NSUserNotification')¬ NSUserNotificationCenter = objc.lookUpClass('NSUserNotificationCenter')¬ notification = NSUserNotification.alloc().init()¬ notification.setTitle_("TestTitle")¬ notification.setInformativeText_("This is sample text")¬ center = NSUserNotificationCenter.defaultUserNotificationCenter()¬ center.deliverNotification_(notification)¬ 

Wenn ich oben direkt aus Python läuft, läuft es gut und zeigt Benachrichtigung im Benachrichtigungszentrum. Allerdings, wenn ich Paket über Programm mit PyInstaller, um Binär vorzubereiten und laufen es gibt folgende Fehler.

 AttributeError: 'NoneType' object has no attribute 'deliverNotification_' 

Dies bedeutet, dass ich kein Objekt der Standardbenutzer-Benachrichtigungszentrale bekomme.

Ist jemand auf dieses Problem gestoßen?

Danke im Voraus.

One Solution collect form web for “NSUserNotificationCenter.defaultUserNotificationCenter () Rückgabe von None mit PyInstaller”

Eine Antwort gefunden Stellt sich heraus, dass wir den 'CFBundleIdentifier' Key benötigen, der in der Info.plist-Datei von App definiert ist, die in PyInstallers erzeugter Plist-Datei nicht standardmäßig vorhanden ist. Andernfalls bekommt die App keinen Zugriff auf das Benachrichtigungscenter.

  • Python-Code zur Erkennung von Dunkel-Modus in OS X EI Capitan, um das Statusleisten-Menüsymbol zu ändern
  • PyObjC Entwicklung mit Xcode 3.2
  • Mit pyobjc importiert in PyDev in Eclipse unter Mac OS X
  • PyObjC auf Xcode 4
  • Wie kann man ein tkinter-Fenster auf die anderen stellen?
  • PyObjC + Xcode 3.2 + Nicht-Apple Python
  • Installiere PyObjC auf Python 2.6 auf OS X 10.5?
  • Problem mit openPanelDidEnd in PyObjC in 10.6
  • NSUserNotificationCenter.defaultUserNotificationCenter () Rückgabe von None mit PyInstaller
  • Python ist die beste Programmiersprache der Welt.