【问题标题】:Popup menu doesn't appear when clicking on StatusIcon单击 StatusIcon 时不会出现弹出菜单
【发布时间】:2015-04-12 12:13:03
【问题描述】:

我在网上找到了那个代码:

#!/usr/bin/env python3

from gi.repository import Gtk

def popup_menu(icon, button, time):

    menu = Gtk.Menu()

    menuitemAbout = Gtk.MenuItem(label="About")
    menu.append(menuitemAbout)
    menuitemQuit = Gtk.MenuItem(label="Quit")
    menu.append(menuitemQuit)
    menu.show_all()

    menu.popup(None, None, None, None, button, time)

statusicon = Gtk.StatusIcon()
statusicon.set_from_stock(Gtk.STOCK_HOME)
statusicon.set_title("StatusIcon")
statusicon.connect("popup-menu", popup_menu)

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

Gtk.main()

当我右键单击状态图标时应该会出现一个小菜单,但是当我运行代码并单击时,菜单会出现并立即消失。

知道为什么吗?

【问题讨论】:

    标签: python gtk pygtk pygobject


    【解决方案1】:

    最后,我找到了一个解决方案:当我离开函数时,变量菜单被破坏。所以我必须保存它。 因此,我将我的代码转换为一个类,并将menu 保存在一个属性中:

    #!/usr/bin/env python3
    
    from gi.repository import Gtk
    
    class Menu:
        def __init__(self):
            statusicon = Gtk.StatusIcon()
            statusicon.set_from_stock(Gtk.STOCK_HOME)
            statusicon.set_title("StatusIcon")
            statusicon.connect("popup-menu", self.popup_menu)
    
            window = Gtk.Window()
            window.connect("destroy", lambda q: Gtk.main_quit())
            window.show_all()
    
            Gtk.main()
    
        def popup_menu(self, icon, button, time):
            print(time, button)
    
            self.menu = Gtk.Menu()
    
            menuitemAbout = Gtk.MenuItem(label="About")
            self.menu.append(menuitemAbout)
            menuitemQuit = Gtk.MenuItem(label="Quit")
            self.menu.append(menuitemQuit)
            self.menu.show_all()
    
            self.menu.popup(None, None, None, None, button, time)
    
    Menu()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      相关资源
      最近更新 更多