2013-03-29 158 views
0

我使用python編寫GTK 3.4(使用GObject內省)。 我不明白爲什麼在cb2函數中創建的菜單沒有顯示,或者有時閃爍和消失,而單擊bc1時工作正常。gtk 3彈出式菜單

在用戶點擊按鈕之前,程序並不知道要放在菜單上的所有項目。 任何想法?

#!/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() 
+0

你得到任何錯誤或運行時警告在終端上應用? – drahnr

回答

0

我不熟悉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) 
...