Gtk.StatusIcon PopupMenu в python

Я пытаюсь перенести несколько небольших примеров из PyGTK в новые привязки PyGobject, но я столкнулся с препятствием из-за всплывающего меню, несмотря на то, что получил n o ошибки, при щелчке правой кнопкой мыши меню не отображается, вот код,

from gi.repository import Gtk
class aStatusIcon:
    def __init__(self):
        self.statusicon = Gtk.StatusIcon()
        self.statusicon.set_from_stock(Gtk.STOCK_HOME) 
        self.statusicon.connect("popup-menu", self.right_click_event)

        window = Gtk.Window()
        window.connect("destroy", lambda w: Gtk.main_quit())
        window.show_all()

    def right_click_event(self, icon, button, time):
        menu = Gtk.Menu()

        about = Gtk.MenuItem()
        about.set_label("About")
        quit = Gtk.MenuItem()
        quit.set_label("Quit")

        about.connect("activate", self.show_about_dialog)
        quit.connect("activate", Gtk.main_quit)

        menu.append(about)
        menu.append(quit)

        menu.show_all()

        #menu.popup(None, None, gtk.status_icon_position_menu, button, time, self.statusicon) # previous working pygtk line
        menu.popup(None, None, None, Gtk.StatusIcon.position_menu, button, time) #i assume this is problem line

    def show_about_dialog(self, widget):
        about_dialog = Gtk.AboutDialog()

        about_dialog.set_destroy_with_parent(True)
        about_dialog.set_name("StatusIcon Example")
        about_dialog.set_version("1.0")
        about_dialog.set_authors(["Andrew Steele"])

        about_dialog.run()
        about_dialog.destroy()

aStatusIcon()
Gtk.main()

я предполагаю, что проблема в том, что я не сообщаю меню о self.statusicon там, но он не работает ни в одном из аргументов, поскольку все они хотят widget arg или none, а не statusicon, любой умный человек здесь понял, где я ошибаюсь?

11
задан Mike 26 June 2011 в 16:45
поделиться