0
import pynotify
import gobject


def on_clicked(notification, signal_text):
   print "1: " + str(notification)
   print "2: " + str(signal_text)
   notification.close()


def on_closed(notification):
   print "on_closed"
   notification.close()


def show_notification(title, body):
   n = pynotify.Notification(title, body)
   n.add_action("button", "Test button", on_clicked)
   n.connect("closed", on_closed)
   n.show()


if __name__ == '__main__':
   pynotify.init('TestApp')

   global loop
   loop = gobject.MainLoop()

   # first case
   notify = pynotify.Notification("1_notify", "test")
   notify.add_action("button", "Test button", on_clicked)
   notify.connect("closed", on_closed)
   notify.show()

   # second case
   show_notification("2_notify", "test")

   loop.run()

私の悪い英語でごめんなさい。xfce4-notifyd 通知の終了を処理したい。最初のケースでは、関数「on_closed()」が機能します。2番目のケースで機能しないのはなぜですか?これは 1 つの名前空間でのみうまく機能しますか?

4

1 に答える 1

1

show_notification()戻って解放されると通知オブジェクトが範囲外になるため、機能しません。たとえば、関数から通知オブジェクトを返し、それを本体の変数に格納することで機能させることができます。

于 2015-07-13T19:28:42.197 に答える