是否可以将GtkMenuBar与其他小部件放在一起,而不是显示在该窗口的顶部?
或者我可以使用按钮,但当您将鼠标悬停在这些按钮上时,按钮上的菜单不会像menu
那样,当您接近一个menu item
时},菜单直接弹出,无需点击,其他menu
自动隐藏。我可以制作这样的按钮吗?或者其他可能有的小部件:label , image , and pop down menu item
很酷。
感谢任何想法。
答案 0 :(得分:1)
也许连接到按钮的“enter-notify-event”和“leave-notify-event”可以帮助你做这件事,例如,分别显示和隐藏弹出菜单。
修改强>
我终于忘记了那些行为有点复杂的“进入”和“离开”事件,只是使用了“动作通知事件”......
现在我希望这是你想要的!
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
class MenuExample:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_size_request(200, 100)
self.window.set_title("GTK Menu Test")
self.window.connect("delete_event", lambda w,e: gtk.main_quit())
# A vbox to put a button in:
vbox = gtk.VBox(False, 0)
self.window.add(vbox)
vbox.show()
self.popped = False
# Create a button to simulate a menu
button = gtk.Button("press me")
vbox.pack_start(button, False, False, 2)
self.window.add_events(gtk.gdk.POINTER_MOTION_MASK)
self.window.connect("motion-notify-event", self.wakeup)
self.window.show_all()
self.bmenu = gtk.Button("A single entry menu")
self.bmenu.connect("clicked", self. menuitem_response, "Click on the magic menu !")
vbox.pack_start(self.bmenu, False, False, 2)
def wakeup(self, widget, event):
#print "Event number %d woke me up" % event.type
(x, y) = self.window.get_pointer()
if y < 30:
if self.popped == False:
self.popped = True
self.bmenu.show()
elif y > 60:
if self.popped == True:
self.popped = False
self.bmenu.hide()
# Print a string when a menu item is selected
def menuitem_response(self, widget, string):
print "%s" % string
def main():
gtk.main()
return 0
if __name__ == "__main__":
MenuExample()
main()