gpt4 book ai didi

python - 使用 PyGTK 的右键单击菜单(上下文菜单)

转载 作者:太空狗 更新时间:2023-10-29 18:28:21 26 4
gpt4 key购买 nike

所以我对 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()

我想在这个窗口内右键单击,然后弹出一个菜单,如警报、复制、退出,任何我想放下的东西。

我将如何实现?

最佳答案

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,您仅响应鼠标右键的鼠标按下事件。

关于python - 使用 PyGTK 的右键单击菜单(上下文菜单),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6616270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com