Python gtk 3弹出菜单

Python gtk 3弹出菜单,python,menu,gtk,Python,Menu,Gtk,我正在用python(带有GObject内省)编写GTK3.4。 我不明白为什么在点击bc1时,cb2功能中创建的菜单不显示,或者有时闪烁并消失 在用户单击按钮之前,程序不知道要在菜单上显示的所有项目。 有什么想法吗 #!/usr/bin/python from gi.repository import Gtk def create_menu(): m = Gtk.Menu() item = Gtk.MenuItem(u"piano") m.append(item)

我正在用python(带有GObject内省)编写GTK3.4。 我不明白为什么在点击bc1时,cb2功能中创建的菜单不显示,或者有时闪烁并消失

在用户单击按钮之前,程序不知道要在菜单上显示的所有项目。 有什么想法吗

#!/usr/bin/python

from gi.repository import Gtk

def create_menu():
    m = Gtk.Menu()
    item = Gtk.MenuItem(u"piano")
    m.append(item)
    m.show_all()
    return m

menu1 = create_menu()

def cb1(widget):
    menu1.popup(None, None, None, None, 0, 0)
    return True

def cb2(widget):
    menu2 = create_menu()
    menu2.popup(None, None, None, None, 0, 0)
    return True

w = Gtk.Window()
grid = Gtk.Grid()
w.add(grid)

b1 = Gtk.Button("cb1")
grid.add(b1)
b1.connect('clicked', cb1)

b2 = Gtk.Button("cb2")
grid.add(b2)
b2.connect('clicked', cb2)

w.connect('destroy', Gtk.main_quit)
w.show_all()
Gtk.main()

我不熟悉python绑定

不要在回调中创建菜单,只需用项目填充它

m = Gtk.Menu()

def populate_menu(widget)
  item = Gtk.MenuItem(u"piano")
  m.append(item)
  m.show()
  return True


w = Gtk.Window()
grid = Gtk.Grid()
w.add(grid)

b1 = Gtk.Button("foofoo")
grid.add(b1)
b1.connect('clicked', populate_menu)
...

在终端中运行应用程序时,您是否收到任何错误或警告?