所以我对Python仍然相当新,并且已经学习了几个月,但我想弄清楚的一件事就是说你有一个基本的窗口......
#!/usr/bin/env python
import sys, os
import pygtk, gtk, gobject
class app:
def __init__(self):
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_title("TestApp")
window.set_default_size(320, 240)
window.connect("destroy", gtk.main_quit)
window.show_all()
app()
gtk.main()
我想在这个窗口右键单击,然后弹出一个菜单,如警报,复制,退出,无论我想放下什么。
我将如何实现这一目标?
答案 0 :(得分:12)
有一个例子可以在http://www.pygtk.org/pygtk2tutorial/sec-ManualMenuExample.html
找到这个它向您展示了如何创建一个菜单,将其附加到菜单栏,还可以监听鼠标按钮单击事件并弹出创建的相同菜单。
我认为这就是你所追求的目标。
编辑:(添加了进一步的说明以显示如何仅响应鼠标右键事件)
总结一下。
创建一个小部件以侦听鼠标事件。在这种情况下,它是一个按钮。
button = gtk.Button("A Button")
创建菜单
menu = gtk.Menu()
用菜单项填写
menu_item = gtk.MenuItem("A menu item")
menu.append(menu_item)
menu_item.show()
让小部件侦听鼠标按下事件,将菜单附加到其上。
button.connect_object("event", self.button_press, menu)
然后定义处理这些事件的方法。如链接中的示例所述,传递给此方法的窗口小部件是您想要弹出的菜单,而不是正在侦听这些事件的窗口小部件。
def button_press(self, widget, event):
if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
#make widget popup
widget.popup(None, None, None, event.button, event.time)
pass
您将看到if语句检查按钮是否被按下,如果是,则将检查按下哪个按钮。 event.button是一个整数值,表示按下了哪个鼠标按钮。所以1是左按钮,2是中间,3是鼠标右键。通过检查event.button是否为3,您只响应鼠标右键的鼠标按下事件。