我在互联网上找到了代码:
#!/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()
当我右键单击状态图标时,会出现一个小菜单,但是当我运行代码并单击时,菜单会出现并立即消失。
知道为什么吗?
答案 0 :(得分:3)
最后,我找到了一个解决方案:当我离开函数时,变量菜单被销毁了。所以我必须保存它。
因此,我将代码转换为类,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()